Unityで簡単なクリックゲーム作成【02:動く黒い点を作る】

Unity初心者の方向けに簡単なクリック連打ゲームの作り方を紹介しています。
白い盤面の上を動き回る黒い点をクリックして黒く塗りつぶしていくゲームです。
非常にシンプルなゲームなので初めてゲームを作る人におすすめします。

このゲームの仕組みを使って作ったゲームです。
PCのみとなりますが、こちらでプレイ可能です。

全部で5つの記事に別れています。

前回白い盤面を作成するところまで出来ました。

今回は盤面をランダムに動き回る黒い点を作っていきたいと思います。

Unityスキルアップ、
始めるなら今

パズル、脱出、RPG...目標のゲームを完成させよう!

人気のUnity講座はこちら

Udemy講座

動く点のプレファブを作る

盤面の上を動き回る黒い点を作ります。
素材は前回分割したmapTileの黒い四角を使います。
Spritesフォルダ内のmapTileから黒い点を選択しHierarchy上のMapの子要素に設定します。
名前はBlackChipとしておきます
動く点を追加

BlackChipにコンポーネントを追加していきます。
具体的にはBoxCollider2DとRigidbody2Dです。
今回重力は関係無いのでRigidBody2DのGravity Scaleは0にしておきます。
タグも付けてあげましょう。
BlackChipとしました。

続いてスクリプトを追加します。
新たにC#スクリプトを作成しましょう。
名前はBlackChipControllerとします。
作成したらBlackChipに追加します。
最終的にBlackChipのInspectorはこのようになりました。
BlackChipのInspector上
BlackChipのInspector下
コンポーネントを追加したらWhiteChip同様、プレファブ化し、Hierarchy上からは削除しておきます。

MapControllerから生成

続いて前回作成したMapControllerを修正していきます。
MapControllerのStart関数内でBlackChipを生成するように直していきます。
またMapControllerでBlackChipが動く処理を呼び出すためBlackChipControllerも取得しておきます。

MapControllerを修正したらMapのInspectorからBlackChipのPrefabをアタッチしておきましょう。
MapControllerにBlackChipのPrefabをアタッチ

これで実行してみると小さくて見えづらいですが真ん中に黒い点が表示されました。
画面上の黒い点を確認

ランダムに目的地を設定する

ではこの黒い点が動く目的地を設定してみたいと思います。
やり方は様々考えられますが、今回は敷き詰められたWhiteChipをランダムで指定しそれを目的地にしたいと思います。
流れとしてはこのような感じでしょうか。

  1. whiteChipを格納しておくListを用意
  2. whiteChip生成時にListに格納する
  3. List内のWhiteChipをランダムで選ぶ
  4. 選ばれたWhiteChipの位置を目的地にする

この流れに沿ってMapControllerを修正していきます。

このように敷き詰められたwhiteChipの中から一つ抽出し目的地を設定してみました。
今回横縦80個で並んでますので合計6,400個のwhiteChipがリストに格納されています。
Listは0番目から始まるので0から6399までのいずれかの値がidxに返ってきます。
ちなみにRandom.Range()はint型の場合、最大値に指定した数は含まれないので6,400までではなく6399までとなります。
実行して確認してみます。
Random.Rangeの値をログで確認
このように目的地の座標をランダムで取得出来ました。

目的地に向かって動く

続いてBlackChipを目的地まで動かしてみたいと思います。
BlackChipControllerに処理を記述していきましょう。
流れとしてはこのような関数があれば良さそうな気がします。
Moveという関数を作ってみたいと思います。

  1. 引数で目的地の座標を受け取る
  2. ターゲットとなるポジション用変数に代入する
  3. コルーチンで目的地まで動かす

実際に記述してみるとこのような感じでしょうか。

関連記事

このMove関数をMapController側で呼んであげれば良いと思います。
MapControllerを修正してみましょう。

目的地の再設定

目的地に黒い点がたどり着いたら次の目的地を設定してあげましょう。
流れはこのような感じになります。

  1. MapControllerのUpdate関数で移動してるかどうか判別する
  2. 移動中でなければ(目的地についていたら)
  3. 再度BlackChipControllerのMove関数を呼び出す

BlackChipControllerのisMovingを使って実装出来ると思います。
処理自体は最初にBlackChipを動かした流れと全く同じです。
MapControllerはこのようになりました。

実行結果はこのような感じです。

いかがでしょうか。
これで不規則に動く黒い点が出来ました。
次の記事ではこの黒い点をマウスを使って撃つ処理を実装してみたいと思います。

ここまでの記事はgithubにアップしてありますので、よければ参考にしてみてください。

関連記事

最後までご覧頂いてありがとうございました。

セール中!
2Dローグライトゲーム

2Dローグライトゲーム開発

Unityヴァンパイアサバイバーズ風講座