「enemy」のスクリプトを設定しよう。
「enemy」は左右に動くだけなので、左右に動くことと、HPが0になったときにやられることができれば大丈夫です。単純に考えれば「左に移動」「右に移動」「消滅」の3つのステートがあればよいのですが、今回は単純な移動を自動で設定できる「テンプレート移動」というアクションが使えます。
なので、「テンプレート移動」「消滅」の2つのステートを作り、HPが0になったら消滅する、というリンクを設定しましょう。
ヴィジュアルスクリプトのアタッチ
1. enemy(GameObject)ノードを選択します。
2. スクリプトをアタッチボタンでスクリプトをアタッチします。
3. 名称はそのままenemy.vsで作成を押しましょう。
「テンプレート移動」「消滅」のステート制作
1. ステート001を「テンプレート移動」にリネームします。
2. インスペクターでアニメーションカテゴリを「移動」に設定します。
3. 「+実行アクションを追加」ボタンをクリックします。
4. 「テンプレート移動の設定」を選択します。
5. 「移動時間」を3、「段差から落ちない」をオンに設定します。これで3秒移動するか、落下するような段差があった場合に折り返すようになります。
6. 「追加」を押します。
7. 続いて、「テンプレート移動」ステートの右側の空間を右クリックし、「ステートを追加」します。
8. ステート001を「消滅」にリネームします。
9. 「+実行アクションを追加」ボタンをクリックします。
10. 「自身を消滅させる」を選択して追加しましょう。
11. 以下のようになっていればステートの設定が完了です。
「テンプレート移動」から「消滅」のリンクをつくろう
1. 「テンプレート移動」ステートを右クリックして「リンクを追加」し、「消滅」ステートにつなぎます。
2. インスペクターの「+その他条件の設定」ボタンをクリックします。
3. 「HPが0になった」を選択します。
4. 設定項目はそのまま(データタイプ:自分自身)で良いので追加します。
5. 以下のようになっていれば設定完了です。
「enemy」を「stage1」シーンに配置しよう。
それでは、enemyの設定ができたので、stage1に配置してテストプレイしましょう。Playerと同じレイヤーに配置します。
1. エディター画面をScriptから2Dに変更します。
2. シーンタブをstage1に切り替えます。
3. シーンウィンドウでPlayerノードを選択します。
4. 選択したまま、ファイルシステムから「enemy.tscn」をプレイヤーの右側にドラッグ&ドロップします。
5. 配置できたらテストプレイをしてみましょう。
敵が3秒毎に左右に動き、弾を3回あてると消滅することが確認できれば成功です。
動かないときのチェックリスト
敵が左右に動かない時:「テンプレート移動」ステートを確認しましょう。
敵が折り返しても反転しない時:enemyノードのアニメーションセットと、「テンプレート移動」ステートのアニメーション指定を見直してみましょう。
敵が弾1発で消えてしまう時:enemyのbasesettingsの「体力」「最大体力」と「無敵」の設定を見直してみましょう。
弾があたらない時:enemyの「HitArea」のCollisionLayer/Mask、bulletの「AttackArea」のCollisionLayer/Maskを確認しましょう。
弾が消えない時:「bullet」の移動から消滅ステートへのリンクと、消滅ステートのアクションを確認してみましょう。