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にアップしてありますので、よければ参考にしてみてください。

おすすめUnityオンライン学習

一人でゲーム開発が不安な方はオンラインスクールで学習すると効率が良いと思います。
以下に当てはまる人は検討してみると良いかもしれません。

「ゲーム作りけど何から初めればいい?」
「入門書をの次に何をしたらいいの?」
「疑問や問題を一人で解決出来ない。。」
「ゲームを完成させる自信がない。。」
「気軽に質問できる環境が欲しい。。」

自分で学習することに限界を感じたら
オンライン学習しましょう!

Udemy

Udemy
特徴:教材動画買い切り型
レッスン方法:動画教材/Q&Aで質問
習得スキル:教材動画によって異なる
コース概要: ピンポイントで作りたいゲームジャンルの動画を見つけることができるかもしれません。 また頻繁にセールを開催していますのでゲーム開発講座が1500円~で購入することも可能です。
ゲームジャンル別おすすめ講座はこちら Udemy 詳細

テックアカデミー

テックアカデミー
特徴:現役エンジニア伴走型レッスン
レッスン方法:チャット(週2回)/テキストチャット/課題レビュー
習得スキル:オリジナルゲームアプリの作成
コース概要: 途中で挫折しないためにメンター(相談者)が週2回、マンツーマンであなたの質問・相談に答えてくれるので、ゲーム開発・プログラミング未経験の人でも安心してゲーム開発に取り組めます。転職したい人向けのサポートもあります。無料体験もあります。
テックアカデミー 詳細

テックスタジアム

テックスタジアム
特徴:ゲーム開発の為のオンラインスクール
レッスン方法:動画教材,Slackでの質問(24時間)
習得スキル: Unity,UnrealEngine、CG、企画、サーバー、AI、XR等
コース概要: ゲーム業界で必須な技術の習得が可能です。Slack上で待機している先生への24時間、何度でも質問できます。またIT・ゲーム業界への就職サポートが無料で受けられます。
ゲーム開発に特化したオンラインスクールですので、Unityはもとより、他のゲームエンジンやゲーム業界に興味がある方にはオススメです。
テックスタジアム 詳細

デジハリONLINE

デジハリONLINE
特徴:動画カリキュラム型レッスン
レッスン方法:動画講座/Slack/予約制Zoom相談
習得スキル:Unity基礎,実践/ハイクオリティ3Dゲーム
コース概要: デジタルハリウッド大学・大学院などを通じたデジタルコンテンツ業界とのつながりを活かし、最新かつ実践的なカリキュラムを提供しています。【基礎編】【実践編】とカリキュラムが分かれていて、それぞれに課題があり、ご自身の理解度を把握できます。最終的にはハイクオリティの3Dゲームが作れるようになります。
デジハリONLINE 詳細

関連記事

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

プログラミング未経験でもOK

初学者向け ブロック崩しで学ぶUnityゲーム開発