はじめに
どうもみなさん、おはこんばんにちわ。
レオンです!
Enemy AI「ハッ!こいつめっちゃ攻撃してくるじゃん!やってやろう」
ということがあると思います。 そういうときに、「攻撃してくるじゃん」ということをどのようにして認識するのでしょうか?
Detect Attacking Player
Controller
攻撃してくるプレイヤーを検知する方法はたくさんあると思います。
例えば, Event Any Damage
のinstigated By
を取得し、それのget actor location
を取ってきたりするなど。アレ…この方法結構よくないか…。
(ふと、ブログを書きながら思ってしまってしまいました)
Details
他にもAI Perception
から取ってくることができます。
ControllerからAI Perception Component
を追加します。
AI PerceptionのDetailsからDamage Sense
を追加します。
Event Graph
OnPerceptionUpdated
イベントからはじめます。Perceptionの情報を取ってくる。
私は、そのあとBlackboardに追加しました。
Player
PlayerのReport Damage Event
をよびます。
そうすることで、プレイヤーが攻撃しているということになります。
Let's Play
できてますね~。
デバッグのところに、AttackingEnemy
がNone
からPlayerShooter
に変わっていることが確認できました。
さいごに
私は、Damageのみならず様々なPerceptionを追加しています。そうすることによって柔軟性のあるAIができます。
引用
考察
- Blackboardに追加してから、Serviceで少しイジりながらセッティングするのが良いのではないかと考えています。
- 重要なのはDamageを与えた後何をするかだと考えています。
感想
- このように簡単に追加できるのは面白いと思いました。