Unityで簡単なクリックゲーム作成【03:ターゲットの作成】

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

PCのみとなりますが、こちらでプレイ可能です。

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

前回まででランダムで動く黒い点を作成するところまで出来ました。

今回は3回目です。
ターゲットマークを作って行きたいと思います。
ターゲットマークにはこの2つの機能を実装したいと思います。

  1. マウスカーソルに追従して動く
  2. 左クリックで黒い点を撃つ

今回は1番目のマウスカーソルに追従する部分を実装してみたいと思います。

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

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

人気のUnity講座はこちら

Udemy講座

今回このような感じになると思います。
では早速続きをやっていきましょう。

ターゲットオブジェクトの作成

まずターゲットの画像をHierarchyにドラッグしてゲームオブジェクトにします。
Spritesフォルダ内のTargetがそれに当たりますので早速配置します。
ゲームビューで見てみると非常に小さいです。

ターゲットを配置

これだと黒い点と見分けがつかないので大きくしてあげましょう。
Sprites内のTargetを選択しInspectorのPixels Per Unitの値を100から24にしてApplyしましょう。
先程よりも見やすくなったと思います。
Pixels Per Unitはシーンビューのマス目の中に何個のピクセルで表示するかという設定になります。
Targetの素材自体は縦横16ピクセルで作られてますのでPixels Per Unitの値を16にするとシーンビューのマス目と同じ大きさになります。
それだと大きすぎるので24にして若干小さくしています。

【Pixels Per Unitが100の場合】
Pixels Per Unitが100の場合

【Pixels Per Unitが16の場合】
Pixels Per Unitが16の場合

【Pixels Per Unitが24の場合】
Pixels Per Unitが24の場合

Pixels Per Unitに関してはこちらのブログで非常に解りやすく説明してくれています。

Targetのサイズの調整が済んだので必要なコンポーネントを追加していきましょう。
今回必要なのはCircleCollider2DとTargetを動かすためのC#スクリプトです。
CircleCollider2DはisTriggerにチェックを入れ、スクリプトに関してはScriptsフォルダ内にTargetControllerというC#スクリプトを新たに作成し追加します。
TargetのInspectorはこのようになりました。
TargetのInspector

ターゲットマークをマウスの位置に合わせて動かす

続いてマウスの動きに合わせてTargetを動かしていきましょう。
TargetControllerを編集していきます。
やることは以前このブログでも紹介したマウス座標にキャラクターをついてこさせる記事とほとんど同じです。
このようなコードになりました。

実際に起動するとTargetがついてくるのがわかります。
マウス座標とターゲットの同期

しかしこれだとマウスカーソルが画面外に出た時にTargetも出てしまい見えなくなってしまいます。
次はこれを修正していきたいと思います。

移動範囲の設定

今回のゲームでTargetが移動出来る範囲はMapの子要素で敷き詰められたWhiteChip内に制限したいと思います。
処理の流れを整理するとこのような感じになるでしょうか。

  1. Target移動範囲用の変数を作る
  2. WhiteChipの角(最大)のX,Y座標取得
  3. Targetの移動範囲用変数にわたす
  4. わたされた座標を元に移動範囲を制限する

これに沿って実装していきたいと思います。
まずTargetControllerに変数を2つ用意します。
そしてMapControllerにはTargetControllerをアタッチするためにSerializeFieldを用意します。

【TargetController】

【MapController】

続いてHierarchyでMapを選択しInspectorにTargetをアタッチします。
このようになりました。
Mapコントローラーにターゲットをアタッチ

MapControllerからTargetControllerに座標を渡して行きます。
修正するのはMapControllerのみとなります。
Start関数内に追記します。

これでMapControllerからTargetControllerのxLimit,yLimitに値を渡すことが出来ました。
最後にこの値を元にTargetの移動制限処理を記述していきます。

これでTargetは範囲内のみの移動となりました。
ターゲットの異動範囲制限チェック

移動範囲の制限に関しては過去に記事にしていますので良かったら参考にしてみてください。

次回は動くターゲットと黒い点が重なった時に左クリックをしたら白い部分が黒く塗られるという処理を実装していきたいと思います。

ここまでの記事は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 詳細

関連記事

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

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

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

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