作成したエネミーの制御をスクリプトを通じて行えるようにします。
PlayerController スクリプトと同じように、Scripts フォルダ内に
EnemyController スクリプトを作成して、その中に、
エネミーの制御を管理する処理を記述します。
スクリプトが完成したら、EnemyController スクリプトをエネミーのゲームオブジェクトに
アタッチすることで、スクリプトを実行することが出来ます。
制御、といっても色々な状態が含まれます。そこでまずは、エネミーの
移動処理を実装しようと思います。
「
エネミーの移動」とはゲーム内の言葉ですが、これをUnity側、すなわち、プログラムとして考えてみると、「
ゲーム内のゲームオブジェクトの座標の変更」と同義です。
つまり、
エネミーのゲームオブジェクトの座標情報をプログラムを通じて更新していくことが出来れば、それはゲーム上では「
エネミーが移動している」ように見せることが出来ます。
プログラムのロジックを考える際には、この日本語の内容を
プログラムに置き換えるイメージが非常に重要になります。
エネミーの移動については、現在設置した位置から、
徐々に、キャラのいる下方向へと移動させる設計とします。
そのため、一瞬でキャラの位置に移動してしまうようでは、制御失敗です。
「徐々に」ということは、
継続して座標の変更処理を行う必要があります。Unity には Update メソッドという、継続的な処理を行うことに適したメソッドが用意されています。
今回はこちらを利用するように設計を行います。
ここまでの状態を、EnemyController スクリプトを実際に作成し、日本語コメントとして、実装したい処理の内容を記述してみてください。
次のようなイメージになると思います。
void Update() {
// このスクリプトがアタッチしているゲームオブジェクトを徐々に移動する
}
このように準備をします。それから、この日本語の内容を、プログラムとして考えて下に記述するようにしてみてください。
他にもロジックを作っていく方法はありますが、コメントを記述しておいてからプログラムに直していく手法がわかりやすく、コメントも残るため、やりやすい方法になります。
移動の処理ですが、Unity の用意している情報に Transform クラスの扱う、Tranlate メソッドでの移動があります。
これは、移動させたいゲームオブジェクトの Transform コンポーネントの情報を取得し、
その上で Tranlate メソッドを実行することによって、そのゲームオブジェクトの座標情報を変更することができる処理になります。
Tranlate メソッドを1回実行しただけでは座標の変更も1回だけですが、
短い座標の変更を何回も継続的に行うことによって座標の更新を行い、
その結果、
ゲームオブジェクトを徐々に移動をさせる処理にすることが出来ます。
次のメソッドの内容を確認した上で、実際に Update メソッドに処理を記述し、エネミーの移動を実装してみましょう。