5. 行動パターンの追加


敵の行動パターンをさらに追加していきます。

前回までのチュートリアル

予めEnemy3のArborFSMをArbor Editorウィンドウで開いておいてください。

  • HierarchyウィンドウからEnemy3オブジェクトを選択。
  • 一つ目のArborFSM(NameがEnemyFSM)の「Open Editor」ボタンをクリック。

時間経過後ショットを停止

10秒経過したらワインダーショットを停止させます。

  • Shotステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Transition > TimeTransition」を選択。
GIF
  • 追加したTimeTransitionを以下のように変更。
Seconds 10

TimeTransitionの遷移先ステートを作成します。

  • ShotステートのTimeTransitionの「Next State」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Shot Stop」に変更して確定。
GIF

Shot StopステートにSendTriggerを追加します。

  • Shot Stopステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Trigger > SendTrigger」を選択。
GIF
  • 追加したSendTriggerを以下のように変更。
Target Weapon2オブジェクト
Message StopTrigger

プレイボタン」を押して動作確認してみましょう。

Weapon2の攻撃を10秒間後に停止します。

左側に移動

左側に移動させます。

  • Shot Stopステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Transition > GoToTransition」を選択。
GIF

GoToTransitionの遷移先ステートを作成します。

  • Shot StopステートのGoToTransitionの「NextState」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Left Move」に変更して確定。
GIF

移動させるために、TweenRigidbody2DPositionを使用します。

  • Left Moveステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Tween > TweenRigidbody2DPosition」を選択。
GIF
  • TweenRigidbody2DPositionを以下のように変更。
TweenMoveType Relative
To (-2, 0)

自機狙いのショット

左に移動し終わったら自機狙いのショットを開始します。

TweenRigidbody2DPositionの遷移先ステートを作成します。

  • Left MoveステートのTweenRigidbody2DPositionの「Next State」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Shot 2」に変更して確定。
GIF

ShotステートのSendTriggerをコピーし、Shot 2に貼り付けします。

  • ShotステートのSendTriggerの設定アイコンをクリック。
  • メニューから「コピー」を選択。
  • Shot 2ステートの設定アイコンをクリック。
  • メニューから「挙動を貼り付け」を選択。
GIF
  • Shot 2ステートのSendTriggerを以下のように変更。
Target Weaponオブジェクト

動作確認してみましょう。

なお、敵の自動生成を行っているEmitterオブジェクトを一旦無効にしてから開始すると確認しやすいです。

  • Hierarchyウィンドウから「Emitter」を選択。
  • InspectorウィンドウでGameObjectを非アクティブに変更。

  • プレイボタン」を押して実行。

Weapon2での攻撃を10秒間行い左方向へ移動しWeaponでの攻撃します。

敵弾の追加

時間経過後、自機方向に移動する敵弾を追加します。

  • Projectウィンドウで「Assets/ShootingGame/Prefabs/EnemyBullet」を選択。
  • 上部メニューから「Edit > Duplicate」を選択。
  • 「EnemyBullet2」にリネーム。
GIF

プレハブはシーンに配置しなくても直接編集できます。

作成されたEnemyBullet2をArbor Editorで開いてください。

  • EnemyBullet2のInspectorウィンドウでArborFSMの「Open Editor」ボタンをクリック。

StartステートにTimeTransitionを追加します。

  • Startステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Transition > TimeTransition」を選択。
GIF
  • TimeTransitionを以下のように変更。
Seconds 0.5

TimeTransitionの遷移先ステートを作成します。

  • TimeTransitionの「Next State」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Rotate」に変更して確定。
GIF

Rotateステートで自機方向に方向転換させます。

  • Rotateステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Scripts > LookAt2DObjectWithTag」を選択。
GIF
  • LookAt2DObjectWithTagを以下のように変更。
Transform EnemyBullet2プレハブ(自分自身)
Tag Player

自機方向に方向転換すると同時に移動速度も変更します。

  • StartステートのSetVelocityRigidbody2Dの設定アイコンをクリック。
  • メニューから「コピー」を選択。
  • Rotateステートの設定アイコンをクリック。
  • メニューから「挙動を貼り付け」を選択。
GIF
  • SetVelocityRigidbody2Dを以下のように変更。
Speed 3

Weaponから発射する弾丸をEnemyBullet2に変更します。

  • HierarchyウィンドウからWeaponオブジェクトを選択。
  • Inspectorウィンドウの「Open Editor」ボタンをクリック。
  • Shotステートの2つのInstantiateGameObjectを両方とも以下のように変更。
Prefab Assets/ShootingGame/Prefabs/EnemyBullet2プレハブ

プレイボタン」を押して動作確認してみましょう。

Weaponから発射された弾丸は0.5秒後に自機方向に方向転換します。

ワインダー発射に戻る

再びEnemy3のArborFSMを開いてください。

Shot 2ステートにTimeTransitionを追加します。

  • Shot 2ステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Transition > TimeTransition」を選択。
GIF
  • TimeTransitionを以下のように変更。
Seconds 10

TimeTransitionの遷移先ステートを作成します。

  • TimeTransitionの「Next State」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Stop Shot2」に変更して確定。
GIF

Shot2ステートのSendTriggerをコピーし、Stop Shot2ステートに貼り付けします。

  • Shot 2ステートのSendTriggerの設定アイコンをクリック。
  • メニューから「コピー」を選択。
  • Stop Shot2ステートの設定アイコンをクリック。
  • メニューから「挙動を貼り付け」を選択。
GIF
  • SendTriggerを以下のように変更。
Message StopTrigger

Stop Shot2ステートにGoToTransitionを追加します。

  • Stop Shot2ステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Transition > GoToTransition」を選択。
GIF

GoToTransitionの遷移先ステートを作成します。

  • GoToTransitionの「Next State」をドラッグ。
  • グラフの何もないところでドロップ。
  • メニューから「ステート作成」を選択。
  • ステート名を「Center Move」に変更して確定。
GIF

Center MoveステートにTweenRigidbody2DPositionを追加します。

  • Center Moveステートの設定アイコンをクリック。
  • メニューから「挙動追加」を選択。
  • 挙動選択ウィンドウから「Tween > TweenRigidbody2DPosition」を選択。
GIF
  • TweenRigidbody2DPositionを以下のように変更。
Tween Move Type Relative
To (2, 0)

  • TweenRigidbody2DPositionの「Next State」をドラッグ&ドロップして、Shotステートに接続。
GIF

プレイボタン」を押して動作確認してみましょう。

次のステップ

6. Waveの追加