LoginSignup
0
0

More than 1 year has passed since last update.

[UE4] Nav Link Proxyを使った段差があるレベルでジャンプできないキャラが混在する場合の設定について

Posted at

はじめに

Nav Link Proxyを使った段差があるレベルで、ジャンプできるキャラとジャンプできないキャラが混在する場合、普通にナビメッシュを使うと、ジャンプできないキャラが移動できないにもかかわらず進もうとして段差のところで引っかかってしまうことが起こります。
この場合、キャラ毎に適用するナビメッシュを使い分ける必要があります。
Nav Link Proxyを使った段差があるレベルで、キャラにジャンプをさせる方法については、以前の記事Nav Link Componentを使用してゲーム内でナビメッシュをつなぐで説明しています。

環境

Windows10
UnrealEngine 4.27.2 (エディタの言語設定は英語です)

作り方

・プロジェクトの設定でSupportedAgentsの設定を追加します。
ここでは、ジャンプできるキャラ用の設定名をCanJumpに、ジャンプできないキャラ用の設定名をNotCanJumpに設定しています。
image.png

・NavArea_Defaultを親クラスとしてBPを作成します。
ここでは、ジャンプできるキャラ用にBP_NavArea_CanJumpを、ジャンプできないキャラ用にBP_NavArea_NotCanJumpを作成しています。
BP_NavArea_CanJumpはClass DefaultsのSupportedAgentsの設定を以下のようにします。
image.png
BP_NavArea_NotCanJumpはClass DefaultsのSupportedAgentsの設定を以下のようにします。
image.png

・RecastFilter_UserDefaultAreaを親クラスとしてBPを作成します。
ここでは、ジャンプできないキャラ用にRecastFilter_NotCanJumpを作成しています。
Area Classの設定をBP_NavArea_NotCanJumpにします。
image.png

・ジャンプできないキャラの設定を変更します。
キャラについているCharacter MovementコンポーネントのNav MovementのMovement Capabilitiesの設定で、Can Jumpのチェックを外します。
image.png

・レベルに設置するNav Link Proxyをの設定を変更します。
SupportedAgentsの設定をCanJumpに、Area Classの設定をBP_NavArea_CanJumpにします。
image.png

・移動先を決定する処理をキャラにあった設定に変更します。
例えば、ビヘイビアーツリーでEQSを使用している場合は、ジャンプできないキャラが到達可能かどうかを判定するために、Filter ClassをRecastFilter_NotCanJumpにします。
image.png
例えば、GetRandomReachablePointinRadiusノードを使用している場合は、ジャンプできないキャラが到達可能かどうかを判定するために、Filter ClassをRecastFilter_NotCanJumpにします。
image.png

参考資料

【UE4】経路探索のコスト計算をカスタマイズする
Project Settingsにsupported agentsの項目があることをこちらで知りました。

カスタム ナビゲーション システムとクエリ フィルタ
カスタム エリアとクエリ フィルタを使用する方法についての公式ドキュメントです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0