プレイヤーの管理処理の作成 HPやゴールドの表示・弓矢のレベルアップ処理の作成

Unity タワーディフェンスゲームの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

前回は弓(Bow)と矢(Arrow)を作成し、敵(Enemy)に攻撃できるようになりました。

前回の記事↓

敵当たり判定とコルーチンを用いた弓矢の生成&射出処理の作成
前回(第6回)では、ウェーブを作って、敵オブジェクトの出現パターンを制御する仕組みを用意しました。 前回の記事↓ 見た目だけは大分ゲームらしくなってきましたが、まだ敵を倒すことが出来ません。 今回は敵の当たり判定(Collider2...

今回はプレイヤー(Player)を作成し、弓矢の配置やUI(HPなど)の表示をやっていきます。


【Line登録者限定のプレゼントもあるよ!】

プレイヤー(Player)オブジェクトの作成

プレイヤー(Player)オブジェクトを作りましょう。

まず、空オブジェクトを作ります。

Hierarchyビューに、新規オブジェクト(CTRL+SHIFT+N)を作成し、新規ScriptもAddComponent→NewScriptで作成しておきます(いつもの流れですね)

  • 名前:Player
  • スクリプト名:Player

(※Playerは画面に表示される類のものではないため、Transformはそのままでも構いません。もちろんResetして全て0にしても構いません)

Playerに必要なのは

  • 弓Prefab
  • HP(拠点の体力)
  • GOLD(所持金)
  • 選択中の弓
  • 指定の場所に弓の建設が出来る
  • 選択中の弓のレベルアップが出来る
  • 選択中の弓の売却が出来る

あたりです。

この、~~が出来る というのが、そのまま関数になることが多いです
では、Playerスクリプトを↑のリストに従い大枠だけ組むとこのようになります。
 
(※ Start関数は使わないため削りました)
 
では、ちょっとずつ中身を埋めていきましょう。
 

指定の場所に弓の建設が出来るは、所定の金額(今回はとりあえず100としました)以上お金を持っているかを調べ、持っているなら所持金を減らしbowPrefabをInstantiateするだけです。

なお、Instantiateの第二引数にTransform を渡しています。
これにより親Transformを指定しながら生成することが出来ます。

選択中の弓のレベルアップが出来る は、選択中のBowが無い場合は何もしないので if文 で selectBow == null の場合と、
所持金がレベルアップの金額(今回はとりあえず150としました)に足りない(gold < 150)場合、
何もせずに関数を抜けています。

if文でreturnされない場合。
すなわち選択されているBowがあり、所持金が足りている場合は、レベルアップ処理をする予定ですが、まだその機能がBow側に無いため金額だけ減らし、TODOコメントを書いておきます。

選択中の弓が売却できる も同じく、選択中のBowが無い場合はreturnしています。

選択されているBowがある場合は、Bowのレベルに応じてGoldを増やした後にBowを削除(Destroy)する必要があります。

が、まだBowにレベルの概念が無いため、削除(Destroy)と、選択中の弓を売却したということは、選択中の弓が無くなることを意味するので、 selectBow = null; としています。

では、Update関数から用意した関数呼び出すテストコードも書いておきます。

左クリック( Input.GetMouseButtonDown(0) ):CreateBow
右クリック( Input.GetMouseButtonDown(1) ):SellBow

を呼ぶようにしています。(LevelUpは呼んでも意味が無いため呼んでいません)

忘れずに保存をしてUnityEditorに戻ります。

Playerオブジェクトの編集

PlayerオブジェクトのInspectorを見るとこのように、なっていると思います。

Bow Prefabには前回最後に作ったAssets/Prefabs/Bow Prefabをセットします。 Hp は 適当に10 とでも入れておきましょう。 Gold は 1000 にしておきます。

再生して確認

では、UnityEditorで再生をしてテストしてみましょう。

左クリック をすると、Bowが生成され、 右クリックで生成したBowが消えればOKです。

なお、左クリックを連続で何回もすると・・・

このように、同じ場所にBowが何個も置かれてしまいますし、右クリックしても消えません(消えるのは最後に作られたBowだけです)。

クリックしたタイルに弓を作る

これでは、ゲームにならないので、クリックしたタイルに弓が置けるようにしたいですね。

そのためには「クリックした位置にタイルがあるかどうか」を調べる必要があります。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.stores.jp/)で講座閲覧権を取得してね。

おさらいと次回予告

今回はプレイヤーによる弓の配置と、UI画面を作り始めました。

次回はさらにUI画面を作り込み、弓オブジェクトのレベルや制作コスト・売却コスト等をやっていきます。

次回の記事↓

武器や攻撃範囲の強化・武器の売買ができるお店システムの作り方
前回(第8回)では、プレイヤーによる弓の配置と、UI画面を作り始めました。 前回の記事↓ 今回はさらにUI画面を作り込み、弓オブジェクトのレベルや制作コスト・売却コスト等をやっていきます。 弓レベルの追加・コスト まず弓のアップ...


Unity入門の森オリジナル本格ゲーム制作講座はこちら
7種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました