第11回「敵を作る_SinmpleMoveの注意点とビヘイビアツリークイックスタートガイドでのメモ」

プレイヤーキャラクターの動きがある程度できてきたので今度は敵の作成を開始。

SinmpleMoveの注意点

またプレイヤーキャラクターの動きは改造する予定だけど、敵との戦闘をしながら調整したいのでまず敵を作ってしまいたい。

という訳で「アクションゲームブループリント入門」よりナビゲーションメッシュを利用してキャラクターを動かすSimpleMoveToActorでキャラクターを動かしてみる…と、なぜだか動かない。

UE4ANSWRHUBで聞いてみてもなかなか分からずかなり解決に苦戦した。

参照:UE4ANSWRHUB :Simple Move to Actorでキャラクターが動かない

で、原因はなんとまあプレイやキャラクターのカプセルコリジョンが大きすぎたため。

どうも自キャラのCapsulecConponentのShepeのCapsuleHalfHeightが257を超えるとSinmpleMoveToActorが反応しなくなる様子。

多分SinmpleMoveToActorの仕様っぽいためどうしようもなさそう……。

ナビゲーションメッシュはプレイヤーキャラクターが空中にいると読み取ってくれないためあまり使用したくないのだけれど、なにに使用するか分からないので使用できるようにはしておきたい。

プレイヤーキャラクターのロボットは8m程度で作成していたのだけれど実際のサイズはグレーマンと同じ程度のサイズにしてしまってマップを縮小した方が今後の処理を考えると不具合が少ないかもしれない。ナビゲーションメッシュも広いほど重くなるし。

どうもUE4は巨大なものを動かすのに不向きな印象がある。

それに敵やエフェクトはアセットストアのものを利用しようとしていが、基準サイズがグレーマンのため全部拡大すると不具合が生じる可能性は十分にあるし、面倒なことが多くなりそう。

俺は面倒が嫌いなんだ。

役に立ちそうなオマケ参照:UE4AIで使う移動と停止のまとめ

敵AIを作成する~なぜか生じたエラーについて~

ビヘイビアツリーのクイックスタートガイドと下記のHPを参照に敵AIを作成する。

参照:ビヘイビアツリーのクイックスタートガイド

参照:おっさんのゆるゆる研究開発 UE4で敵キャラクターAIを制御する

組んだBPは記載されているままなので割愛。動くぞ、こいつ!

……が、なぜかエラー発生。なんで?

エラーメッセージの内容とエラー箇所で処理を止める機能で原因を探る。

参照:妹でもわかるUnrealEngine4:ブループリントでエラーが起きた時にすぐ止める設定について

で、どうも原因はAIコントローラー上でHomeLocationがBlackboardに格納されていないのが原因臭い。

さらに原因を探してみると、どうも試しに作っていたレベルブループリントのSpawnActorが悪さをしていた様子。予想だけどHomeLocationを読み取る時にキャラクターが生成されていないから値をブラックボードの格納できていなかったのだと思われる。

逆に今後SpawnActorでキャラクターを生み出すときは位置の指定をしてやる必要があるのかと思われる。注意。

判定として使えそうなもの

上記のHPを参考にして組んだBPのAgroCheckでは敵キャラクターからプレイヤーキャラクターまでトレースを飛ばして、間に障害物があるかどうか(見えているかどうかの判定)をしている。下記のようなBPを組むとよくわかる。

これをうまく使えば敵の行動の判定に利用できるかもしれない。

・キャラクターとの間に障害物があれば射撃を行わない

・障害物を感知したら避けて移動する(ナビゲーションメッシュを利用しない移動)

上手く応用出来たらいいと思う。

今後の予定

とりあえず索敵範囲に入ってきたら索敵範囲内にいるうちは追ってくるAIを組むことができた。ただナビゲーションメッシュはキャラクターが空中にいる場合は判定してくれないため別のものを使用してプレイヤーキャラクターを追ってきてもらう必要がある。

それも踏まえて下記のことを実現していきたい。

・プレイヤーキャラクターが空中にいても追ってきてくれる

・ナビゲーションメッシュを利用せずに障害物を避けてプレイヤーを追ってきてくれるか

・攻撃するAIを入れる

・アニメーション、音の導入

・限界いっぱいまで敵をスポーンしてみる

ここまでできればほぼ1体の敵が完成するのでだいぶゲームっぽさが増すと思う。

という訳で次回は「敵を作る_プレイヤーキャラクターが空中にいても追ってきてくれる」の予定。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です