UE5個人的に詰まったところメモ
※個人用メモ、推敲していません。
ブループリントだけ。C++では書いてません。
間違った理解をしているところ、非効率的な解決方法を取っているところもあるので参考にはしないように。
あくまでただの個人用メモ。
プロジェクト設定関係
全然無限ループしてないのに無限ループ扱いでエラーが出る
プロジェクト設定>エンジン>基本設定>ブループリント>ループイテレーションの最大回数
この回数を超えると無限ループ扱いされる。
出荷ビルドしてるのに開発ビルドで出力される
UE4のときと同じやり方だと何故かShippingBuildになってくれない。
面倒だけどプロジェクトランチャーから設定してビルドする。
描画関係
フルスクリーン時だけ画面がチラつく
FPSスムージングは別に垂直同期を取ってはくれない。V-Syncを有効にする。
開発ではなくて遊ぶ側として、グラボの設定をすれば一応ユーザー側で垂直同期を有効にできることもあるので、垂直同期の項目が無い充実したオプション画面を有するゲームを買ってしまったら設定してみよう。
Actor関連
コリジョンちゃんと設定してるのに壁突き抜ける
Rootコンポーネントにコリジョンが無いと子コンポーネントで設定してても突き抜けるらしい。
Pawn作ってるときよく遭遇する。
AI関係
出荷ビルドするとAIが上手く動かない
Pawnイベントグラフ上からBlackboard変数を取得しようとするとそうなる。
開発中(PIE)では問題なく動くのだが、出荷ビルドするとPawn側ではBlackboardを取得できない。
Blackboard変数はあくまでAIController、Service、Taskで使うものということだろうか。
じゃあなんで開発中は動くようにしてあるんだ……
MoveToタスクがBBのLocation情報を継続して取得してくれない(最初に認識した場所にしか行かない)
Observe Blackboard Valueがfalseになってなイカ。
Blackboard Based Conditionの条件分岐がisLessThan選んだときだけ上手く行かない。
Service実行時に初期値はちゃんと設定してるのに……どうして……
たぶんReceiveActivationAIを使っているのが原因?
細かい挙動の違い、仕様はわからないけど、ReceiveSeachStartAIを使ったら上手く初期値設定できた。
OnTargetPerceptionUpdatedで上手くアクターを取得できない
敵AIがプレイヤーキャラクターを取得するとして、視覚検知(AISense_Sight)はプレイヤーのPawnを取得するのに対し、痛覚検知(AISense_Damage)はプレイヤーのControllerを取得している。
あとPlayerControllerはCastToActorでキャストできちゃうところでちょっとハマった。
ただオブジェクトのLocationを取得したいだけだったからCastToActorで良いかなって思ったらハマった。
FLYING NAVIGATION SYSTEM関係
ストアプラグイン。
公式ドキュメント有り。
Discordサーバーをちらっと覗いた感じ積極的にトラブルシューティングを行っている(執筆時現在)ので、分からないことがあったらDiscordサーバーに参加して聞いてみるのが一番早いかもしれない。
Find Path to Location Asynchronously (Find Path to Actor SynchronouslyなどFind Path系) のPathfinding ResultがNullしか返らない
プロジェクト設定>エンジン>ナビゲーションシステム>デフォルトのエージェント名
おそらくここに有効なエージェント名が設定されていないため。
Actor原点は中心にあるっぽいのにPathが足元から伸びる
エンジンデフォルトのナビシステムを考えるとこれが仕様なのかもしれない。←仕様でした。対処方法としてはPathの始点と終点にGetActorBoundsで取得したBoxExtentZを足してやると良さそう?
公式ドキュメントのUsage>Pathfinding>Use Pawn Centre For Path Followingに詳細が書いてあった。
FlyingNavigationDataの詳細タブからUse Pawn Centre For Path Followingを外すか付けるかして望んだ挙動に変えよう。
Path生成して移動させたいけど上手く動かせない
PawnのBP上で動かしたいならロジックは自前で頑張る。
BT上で動かすなら使うのはMoveToノード使えば勝手に障害物検知して避けてくれるのでTaskを新規作成してPath引いてーとする必要は無い(凝った動きをしないのであれば)
凝った動きをしたいならTask構築をやっぱり自前で頑張る。
たぶん。
移動命令が連続するとめちゃくちゃ移動速度が遅くなる
速度が毎回リセットされてるんだろうか?
よくわからないけどUse Fixed Braking Distance for Pathsをtrueにすると一応動いた。