初心者がUnityでスイカゲーム似のゲームを作ってみたお話


作ることになった経緯

なぜ、スイカゲームのオマージュ作品を作ることになったのか。
それは、最近人気のゲームであり、「練習作品としてとても優秀な作品」だと感じたからです。

諸注意

この作品は、あくまでも個人で遊ぶ用です。また、まだゲームを作り始めて半年もいかない人間が作ったものですので、ソースコードがよろしくない場合がございます。参考程度にしていただけると幸いです。


また、おおまかに説明するだけですので、わからない単語などが出てきたり、どのようにその行為をするのかわからない場合は、別途お調べしてください。

作り方の流れについて

まず、このゲームを作る上で、大事な場所をお教えします。
それは、

「同じものがぶつかった時に、あたらしい果物をだす」
です。
正直、ここを突破してしまえば、山は乗り越えたも同然だと思います。

1.オブジェクトを適当な位置に配置する

オブジェクトの配置はお好きなようにしてください。
箱をでかくしてもいいし、あたる物体をスイカよりもおおきくしてみてもいいと思います。

 その後

配置できましたら、
箱には「BoxCollider2D」をつけてください。
当たる物体には、「CircleCollider2D」と「Rigidbody」をつけて、「プレファブ化」してください。
プレファブ化後は、ヒエラルキーウィンドウの物体を消してください。

2.オブジェクトの生成について

今回私は、従来のスイカゲームと違い、クリックしたところからオブジェクトが生成されるようにしております。
if (Input.GetMouseButtonDown(0)) で、マウスのクリックを判定し、
マウスポインタが、2D上の画面のどこにいるのかを判定して、そこから
Instantiate()という関数を使うことにより、オブジェクトを生成するスクリプトを作りました。

従来のものにしたいと思った人は、生成のタイミングを、落ちた後の何秒後かに生成するようにしてみるといいと思います。その時に使えるものとして
time.deltatime 
というものがあるので、調べてみて損はないと思います。

3.オブジェクトがぶつかった時に新しく生成する

さて、今回の本題ともいえる。おなじものがぶつかった時に、一個上のランクのオブジェクトを、1つだけ生成する。という、スイカゲームの核です。
プレファブ化してあるオブジェクトに、新しくUnionというスクリプトを作って実行してみたとして
大半の人は、一個上のランクにはいくけれど、2つ生成されてしまう人が多いと思います。
なぜかというと、プレファブ化されたオブジェクトは、それ1つずつにスクリプトをもっているからです。当たった時に、1つ生成する。というものを書くと、そのスクリプトをもっているオブジェクト同士がぶつかるので、互いにひとつずつ出してしまうのです。
では、それを解消する手立てを教えます。

 本題のようなところ

今回、私はそうならないように、オブジェクト単体ごとをレベルで管理しました。
スイカゲームでいうところの、最初のりんごやぶどうなどが、レベル1やら2やらで、スイカになるとレベルが10とかになっている。ということです。
また、「tag」付けをしてあるのであれば、その「tag」で、このtagがりんごならレベル1。のようにするとととてもいいと思います。

その後、ヒエラルキーウィンドウにあたらしく空のオブジェクトを作ります。
名前はUnionManagerとでもしておくといいでしょう。
このUnionManagerはとても重要な役割を果たしてくれます。
それは、オブジェクトがもつレベルの管理です。
合体するときに、どのレベルのものが合体したのかを判定してくれるようにするのです。
プレファブ化してある、物体たちのスクリプトに、レベルを管理するこのUnionManagerの値を変更することができるようにします。

たとえば、Levelという変数がUnionManagerあったとして、Levelに、プレファブ化した方がもつレベルを1足してあげる。といった感じです。
当たった時に
Level += MyLevel;
みたいな感じです。MyLevelは一律して1なので、1と書いてもいいです。
こうすることにより、当たった時に、UnionManagerのLevelがひとつ上がります。
そして、Levelが上がった時に、Instantiateで生成してあげればいいのです。


最後に

今回、一番スイカゲームの核となる生成について説明しました。
コードが人にとても見せられるものではないので、文章だけの説明となってしまいました。
多分、とても分かりづらいと思います。
詳しく知りたい。コードがオブジェクト指向ではなくてもよい。という方は別途ご連絡くだされば、対応しようと思います。
頑張って人に見せられるコードを書くようにしていきます。


それでは、スイカゲームの当たった時に生成するのがわからなくてこまっている方はぜひご参考にしてみてください。


この記事が気に入ったらサポートをしてみませんか?