Unityでジャンクゲームを作っているっぽい

会社帰りにGPD PocketにUnity入れてゲーム作ってます

【CEtest2】18_CorgiEngineでBOSSの攻撃を切り替えたい

BOSSの仕様

こんな感じで作りたい

  • 本体は移動しない
  • 武器は2つ
    • 武器A、射撃
    • 武器B、手榴弾
  • BOSSに接近したら攻撃開始
    • 一定時間で武器を切り替える

方針

基本的にBOSS本体でAI全て制御
とりあえず、MyTestBoss1を複製してMyTestBoss2を作る

MyTestBossWeapon1編集

以下のコンポーネントを削除

  • AIBrain
  • AIDecisionTargetRadius
  • AIActionDoNothing

AIActionShootだけにする
Labelを判別しやすいようにAIActionShoot_Weapon1とでもしておく
f:id:mekatamatama:20220309222556p:plain

MyTestBossWeapon2編集

MyTestBossWeapon1同様にコンポーネントを削除
AIActionShootだけにする
Labelを判別しやすいようにAIActionShoot_Weapon2とでもしておく
f:id:mekatamatama:20220309222712p:plain

AI作っていく

AIBrainにState追加

Attack1とする
中身は後で設定する
f:id:mekatamatama:20220309222907p:plain

BOSS本体のAIBrainのPatrolling

停止状態の設定

移動しないのでAIActionDoNothing

playerを発見したい

AIDecisionTargetRadiusを追加してplayeの接近を判定する
f:id:mekatamatama:20220309222942p:plain
playerの接近を判定したらAttack1に遷移する様にする
f:id:mekatamatama:20220309223044p:plain

攻撃の設定

BOSS本体のAIBrainのAttack1
MyTestBossWeapon1のAIActionShoot_Weapon1を設定してみる
f:id:mekatamatama:20220309223139p:plain
おおー攻撃できた
youtu.be
子供のオブジェクトに設定したAIにもアクセスできるのね~

攻撃を切り替えたい

2秒後に次の攻撃に変更したい
AIDecisionTimeInStateが使えそう
LabelをAIDecisionTimeInState1にしておく
f:id:mekatamatama:20220309223614p:plain
AIBrainのAttack1に追記
2秒経過したらAttack2を設定してみる
f:id:mekatamatama:20220309223628p:plain
そして、BOSS本体のAIBrainのAttack1を複製してAttack2にする
MyTestBossWeapon2のAIActionShoot_Weapon2を設定してみる
ついでに、TransitionsにAIDecisionTimeInStateを設定して、遷移先をAttack1にする
f:id:mekatamatama:20220309224121p:plain
これで、ずーっと武器を切り替えるようになるはず
youtu.be
おおーこれこれ!