このチュートリアルでの敵弾発射について解説します。
Enemy3のArborFSMでは直接敵弾を発射せず、子オブジェクトのWeaponを間接的に制御するようにしています。
Contents
前回までのチュートリアル
Enemy3から発射命令
SendTrigger
Enemy3のShotステートを見てください。
SendTriggerで、トリガーを送る相手をWeaponとし、そのメッセージを「ShotTrigger」としています。
Weapon側ではこの「ShotTrigger」を引き金として敵弾発射を行う用に制御しています。
Weaponによる発射処理
TriggerTransition
Enemy3の子にあるWeaponオブジェクト選択し、Arbor Editorを見てください。
Startステートに使用されているTriggerTransitionで「ShotTrigger」メッセージが来たら遷移するようになっています。
また、Stop常駐ステートでは「StopTrigger」メッセージを待ち、メッセージが来たらStartステートに瞬時に遷移するようにしています。
このように、SendTriggerとTriggerTransitionを使用することで、オブジェクト間を連動する仕組みが作れるようになります。
詳細は「SendTrigger」と「TriggerTransition」を参照してください。
LookAt2DObjectWithTagについて
Rotation常駐ステートで使用しているLookAt2DObjectWithTagは今回2DSTGのために作成したStateBehaviourです。
Transformフィールドに指定したTransformを、Tagで指定したオブジェクト方向に向き変えるスクリプトとなります。
今回はWeaponをPlayer方向に向かせることで、自機狙いを実現しています。
Shotステートについて
Shotステートでは、InstantiateGameObjectを使用してShotPosition1とShotPosition2からEnemyBulletプレハブを生成しています。
そして、TimeTransitionで0.5秒待ったあと繰り返しEnemyBulletを生成し続けます。
EnemyBulletについて
敵の弾丸は、「Assets/ShootingGame/Prefabs/EnemyBullet」にあります。
EnemyBulletオブジェクトではSetVelocityRigidbody2Dを使用して移動させています。