読者です 読者をやめる 読者になる 読者になる

I From Japan Staff Blog

I From Japan の開発者ブログです

AI Perceptionで攻撃プレイヤーの検知をする

blog.i-fromjapan.com

はじめに

どうもみなさん、おはこんばんにちわ。
レオンです!

Enemy AI「ハッ!こいつめっちゃ攻撃してくるじゃん!やってやろう」

ということがあると思います。 そういうときに、「攻撃してくるじゃん」ということをどのようにして認識するのでしょうか?



Detect Attacking Player

Controller

攻撃してくるプレイヤーを検知する方法はたくさんあると思います。
例えば, Event Any Damageinstigated Byを取得し、それのget actor locationを取ってきたりするなど。アレ…この方法結構よくないか…。 (ふと、ブログを書きながら思ってしまってしまいました)

Details

他にもAI Perceptionから取ってくることができます。

ControllerからAI Perception Componentを追加します。

f:id:rerecchi:20161005030332p:plain

AI PerceptionのDetailsからDamage Senseを追加します。

f:id:rerecchi:20161005030334p:plain

Event Graph

OnPerceptionUpdatedイベントからはじめます。Perceptionの情報を取ってくる。
私は、そのあとBlackboardに追加しました。

f:id:rerecchi:20161005030336p:plain

f:id:rerecchi:20161005030335p:plain

f:id:rerecchi:20161005030337p:plain

Player

PlayerのReport Damage Eventをよびます。
そうすることで、プレイヤーが攻撃しているということになります。

f:id:rerecchi:20161005030338p:plain

Let's Play

f:id:rerecchi:20161005030549g:plain

できてますね~。 デバッグのところに、AttackingEnemyNoneからPlayerShooterに変わっていることが確認できました。

さいごに

私は、Damageのみならず様々なPerceptionを追加しています。そうすることによって柔軟性のあるAIができます。

引用

【UE4】AI Perception の紹介と使い方

考察

  • Blackboardに追加してから、Serviceで少しイジりながらセッティングするのが良いのではないかと考えています。
  • 重要なのはDamageを与えた後何をするかだと考えています。

感想

  • このように簡単に追加できるのは面白いと思いました。

blog.i-fromjapan.com