【Unity/2D】スイカゲーム風の落ち物ゲームを作ってみる話 #3 果物のPrefab Variantを作成する

記事をご覧いただき、誠にありがとうございます。

投稿主の無能です。

前回は、ポインターに移動する機能を実装しました。

今回は容器の中に落下させる果物を作っていこうと思います。

落下させる果物の作成

落下させる果物を作るには、まず果物の種類を決めなくてはいけません。
ここはSwitchに移植されたスイカゲーム本家を参考にしましょう。


本家だと11種類の果物が進化を続け、最終的にスイカになるようです。

進化の過程は
さくらんぼ→苺→ぶどう→デコポン→柿→リンゴ→梨→桃→パイナップル→メロン→スイカ
となるようです。

ここで「デコポン」を「みかん」に変えてこの順で果物を作成します。

さて、この11種類の果物をどうやって作るか…
そう、Prefabですね。

ここではPrefab Variantという機能で果物を作成してみたいと思います。

Prefab Variantとは

Prefab Variantって何ぞ?という事で簡単に説明すると、親のPrefabの機能を引き継いでいる子のPrefab、というイメージです。

普通のPrefabが各個で存在している場合は、それぞれのPrefabは各々のコンポーネントを持っていて、そのコンポーネントは独立しています。

Prefab Variantは、親のPrefabからそれぞれ子のPrefabを作成すると、親のPrefabの変更点を子のPrefab Variantは引き継いでくれます。

今回のスイカゲームで違いを例えると、果物をPrefabで作成した場合は、11種類の果物それぞれに1つずつ変更した部分を加えないといけなくなりますが、Prefab Variantで作成した果物は、親のPrefabの変更を引き継いでくれるので、変更は親のPrefabだけで済みます。

Prefabで変更すると、変更する回数は果物全部の11回になりますから、人間が作業する以上は変更の漏れが出てくる可能性が否めません。

Prefab Variantで変更すると、親のPrefabの1回だけで子のPrefab Variantに変更が行き渡りますから、ミスが少なくなります。

PrefabとPrefab Variantのイメージ

このように、今回のスイカゲームのようなものを作る際は大変有用な機能ですので、ゲームを作る時は参考にしてください。

Prefab Variantのイメージが掴めたところで、実際に作業していきます。

Prefab Variantを作る

基のPrefabの作成

まず基となるPrefabの作成です。

Assetsフォルダを選択した状態でメニュー > Folderで「Prefabs」というフォルダを作成します。
そしてPrefabsフォルダ内に入っておきます。

Prefabsフォルダを作成

Prefabsフォルダの中に入る

そしたらCircleオブジェクトを「FruitsBase」という名前で作成します。

「FruitsBase」というCircleを作成

次にFruitsBaseにはRigidbody2DとCircle Collider2Dが必要になりますので、それらをアタッチします。

Rigidbody2DとCircle Collider2Dをアタッチ

そして果物という事が判別できるようにしたいので、「Fruits」というタグを作成し、FruitsBaseにタグ付けします。

タグを追加

「Fruits」タグを作成

FruitsBaseにFruitsタグを付ける

これでFruitsBaseの下準備が整ったので、PrefabsフォルダにドロップしてPrefabにします。

PrefabsフォルダにFruitsBaseをドロップしてPrefabを作成

ここまでは、普通のPrefabの作成と何ら変わりはありません。
次にこのFruitsBaseを基にPrefab Variantを作成します。

Prefab Variantの作成

ではこのFruitsBaseを基にしてPrefab Variantを作成します。

FruitsBaseを選択した状態でメニュー > Prefab Variantを作成します。

Prefab Variantの名前は「型番_果物名」になるようにします。
さくらんぼの名前は「01_Cherry」で、苺の名前は「02_Strawberry」と言った感じです。

最後のスイカまで作ったら、「Variants」というフォルダをPrefabsフォルダ内に作成して、FruitsBaseと分けておきます。

FruitsBaseを選択した状態でPrefab Variantを作成

01_Cherry ~ 11_WatermelonまでのPrefab Variantを作成

Prefabsフォルダ内に「Variants」フォルダを作成

Variantsフォルダに作成したPrefab Variantを移動

さて、これで果物のPrefab Variantができました。

アイコンにも若干の違いがあって、Prefab VariantのアイコンにはPrefabのアイコンの左側面部に斜線が入っています。

Prefabのアイコン

Prefab Variantのアイコン
左側面部に斜線が入っている

PrefabとPrefab Variantの関係を知るために、ちょっと関係の無い作業をしてみます。

FruitsBaseのCircle Collider2Dを非アクティブにすると、FruitsBaseの変更を受けてFruitsBaseから作成した果物のPrefab VariantのCircle Collider2Dも非アクティブになります。

FruitsBaseのCircle Collider2Dを非アクティブにしてみる

すると果物のPrefab VariantのCircle Collider2Dも非アクティブになる

このように、親のPrefabの変更はそこから派生したPrefab Variantにも影響します。

では逆に、Prefab VariantのCircle Collider2Dをアクティブにしてみます。
ここではスイカにします。

Prefab VariantのCircle Collider2Dをアクティブにする

すると、その親のPrefabであるFruitsBaseは影響を受けていません。

FruitsBaseは影響を受けない

このように、基のPrefabの変更は引き継がれるけど、派生したPrefab Variantの変更は影響が無いことが分かります。

この特性を覚えておくと非常に役立ちます。

それではCircle Collider2Dを元に戻し、Hierarchyビューに残っているFruitsBaseを消して、次の作業をしていきます。
1
Circle Collider2Dを元に戻し、Hierarchyビューに残っているFruitsBaseを消す

果物のサイズと色を付ける

今回は画像は使わずに、Circleのサイズと色付けで果物を区別したいと思います。

まず大きさですが、起点となる01_CherryのScaleを0.5とし、Scaleを0.1ずつ大きくしていくと、06_AppleでScaleが1になります。
そして07_Pearで1.2にして再度0.1ずつ大きくして、10_Melonで1.5になります。
最後の11_WatermelonのScaleを2になるようにします。

01_Cherry

02_Strawberry

03_Grape

04_Orange

05_Persimmon

06_Apple

07_Pear

08_Peach

09_Pineapple

10_Melon

11_Watermelon

次は色を付けます。
各自の果物のイメージの色を付けてください。

01_Cherry

02_Strawberry

03_Grape

04_Orange

05_Persimmon

06_Apple

07_Pear

08_Peach

09_Pineapple

10_Melon

11_Watermelon

作成した果物達

サイズ・色は自由に設定してください。

これでゲームに登場する果物達が準備できました。

まとめ

今回は
  • 果物の基となるPrefabを作成した
  • 基のPrefabから派生してPrefab Variantを作成した
  • 果物のPrefab Variantのサイズ・色付けをした
という事をやりました。

次回は、この果物達をポインターから生成させる機能を実装したいと思います。

では、また次回!

コメント