前回はドラゴンの動的生成について解説しました。
今回は画面をクリックしたときに、そのドラゴンにダメージを与える方法について解説します。
動的生成したインスタンスの操作
動的生成のメリットは、スクリプト内でそのインスタンスを保持できること。
もちろん Find を用いてシーン全体から探すこともできますが、
それをやりだすと「なんでもあり」となってしまうので、しっかり管理しておきたいです。
まず、前回解説の Instantiate で生成したドラゴンをプライベートフィールド enemy で保持します。
ドラゴンは Monobehavior を継承する Enemy クラスなのですが、
それだと、たくさんのメソッドが見えてしまうので
あいだに一つ IEnemy というインターフェースを用意しました。
class Enemy : Monobehavior, IEnemy
となるように。
IEnemy は、GameManager から使うものだけが見えるような以下の実装にしました。
こうすることで GameManager で enemy. とした時に、
Monobehavior のメソッドがたくさん出ることを防ぐことができます。
画面クリックでの通知処理
さて、GameManager 内で管理することで、
クリックした時ドラゴンに直接 Damage を通知できるようになりました。
すなわち以下のように、GameManager の OnClick からダメージを与えることができます。
ダメージ処理と死亡判定は、hpが0より大きかったらダメージアニメ、0以下なら死亡という風に実装。
hp は、ヒットポイントを格納する変数。
クリックゲームでは、数字がインフレするので数値用のクラスを実装して、
hp.Set(0) とか IsZero とかいう風な書き方になっていますが、それはまたの機会に。
学習用には int 型を使って hp=0 や、hp <=0 でもいいと思います。
最大 2億くらいまでなら大丈夫です。
ところで、コード内に animator というのが出てきました。
これは、EnemyのGameObject の prefab に貼り付いている Unity のアニメーションコントローラーです。
次回は、このUnity アニメーションについての解説を行います。
続きます。