クリックゲームの作り方

#3.クリックでドラゴンにダメージを与える方法

Unity-クリックでドラゴンにダメージを与える

前回はドラゴンの動的生成について解説しました。
今回は画面をクリックしたときに、そのドラゴンにダメージを与える方法について解説します。

動的生成したインスタンスの操作

動的生成のメリットは、スクリプト内でそのインスタンスを保持できること。

もちろん Find を用いてシーン全体から探すこともできますが、
それをやりだすと「なんでもあり」となってしまうので、しっかり管理しておきたいです。

まず、前回解説の Instantiate で生成したドラゴンをプライベートフィールド enemy で保持します。

Instantateして保持

ドラゴンは Monobehavior を継承する Enemy クラスなのですが、
それだと、たくさんのメソッドが見えてしまうので
あいだに一つ IEnemy というインターフェースを用意しました。

class Enemy : Monobehavior, IEnemy となるように。

IEnemy は、GameManager から使うものだけが見えるような以下の実装にしました。

こうすることで GameManager で enemy. とした時に、
Monobehavior のメソッドがたくさん出ることを防ぐことができます。

画面クリックでの通知処理

さて、GameManager 内で管理することで、
クリックした時ドラゴンに直接 Damage を通知できるようになりました。

すなわち以下のように、GameManager の OnClick からダメージを与えることができます。

ダメージ処理と死亡判定は、hpが0より大きかったらダメージアニメ、0以下なら死亡という風に実装。

DamageとDeadメソッド

hp は、ヒットポイントを格納する変数。
クリックゲームでは、数字がインフレするので数値用のクラスを実装して、
hp.Set(0) とか IsZero とかいう風な書き方になっていますが、それはまたの機会に。

学習用には int 型を使って hp=0 や、hp <=0 でもいいと思います。
最大 2億くらいまでなら大丈夫です。

ところで、コード内に animator というのが出てきました。
これは、EnemyのGameObject の prefab に貼り付いている Unity のアニメーションコントローラーです。

次回は、このUnity アニメーションについての解説を行います。
続きます。