LoginSignup
1
0

More than 3 years have passed since last update.

[UE4] エージェントのナビメッシュ設定を.iniファイルから設定する

Last updated at Posted at 2020-12-19

検証バージョン: UE4.26.0

はじめに

[目標]
 ・エージェント毎に生成されるナビメッシュの設定を.iniファイルから設定します
 例えば、以下図のようにCellSizeの値を.iniファイルから設定する方法になります。
2020-12-14_22h17_37.png

[応用]
 ・.iniファイルから一括してナビメッシュの生成パラメータを設定することができます
 ・応用として、エージェント毎の設定やナビデータ毎の設定ができるようになります

前提

 以下の内容は前提として知っておきたい内容です。

 ・レベル上のナビメッシュはRecastNavmesh(NavData)の設定に従って生成されます
  ナビメッシュの機能や精度はこの設定を調整します。

 ・ナビメッシュはエージェント毎に生成されます
  エージェントに対するナビメッシュの設定はProject Settingsから行います。
 
 ・デフォルトのNavData(RecastNavmesh)の設定はBaseEngine.iniに設定されています
  プロジェクトで上書きしたい場合はDefaultEngine.iniで再定義するだけです。
  例えば以下のデフォルト値はProject Settingsでも定義されています。

デフォルトのナビメッシュセルサイズの設定値
[/Script/NavigationSystem.RecastNavMesh]
CellSize=19.f

設定

 以下の手順で独自のクラスを追加して.iniファイルから編集できるようになります。

[手順]
① カスタムナビデータクラスを作成
② プロジェクト設定にナビデータクラスを設定
③ .iniファイルにデフォルト定義を追加


① カスタムナビデータクラスを作成

ARecastNavMeshを継承した、MyNavDataというカスタムクラスを作成します。

#pragma once

#include "CoreMinimal.h"
#include "NavMesh/RecastNavMesh.h"
#include "MyNavData.generated.h"

UCLASS()
class TESTPROJECT_API AMyNavData : public ARecastNavMesh
{
    GENERATED_BODY()
};

② プロジェクト設定にナビデータクラスを設定

先ほど作成したナビデータクラス MyNavDataをデフォルトで使用するように割り当てます。
[Project Settings]->[Navigation System]->[Agents]->[Supported Agents]の
NavDataClassMyNavDataを設定するだけです。

2020-12-16_11h02_09.png

設定は DefaultEngine.iniに保存されて以下のように登録されます。

[/Script/NavigationSystem.NavigationSystemV1]
+SupportedAgents=(Name="Normal",Color=(B=0,G=255,R=140,A=164),DefaultQueryExtent=(X=50.000000,Y=50.000000,Z=250.000000),NavDataClass=/Script/NavigationSystem.RecastNavMesh,AgentRadius=35.000000,AgentHeight=144.000000,AgentStepHeight=-1.000000,NavWalkingSearchHeightScale=0.500000,PreferredNavData=None,bCanCrouch=False,bCanJump=False,bCanWalk=False,bCanSwim=False,bCanFly=False)
+SupportedAgents=(Name="Special",Color=(B=23,G=0,R=255,A=164),DefaultQueryExtent=(X=50.000000,Y=50.000000,Z=250.000000),NavDataClass=/Script/TestProject.MyNavData,AgentRadius=40.000000,AgentHeight=200.000000,AgentStepHeight=-1.000000,NavWalkingSearchHeightScale=0.500000,PreferredNavData=/Script/TP426.MyNavData,bCanCrouch=False,bCanJump=False,bCanWalk=False,bCanSwim=False,bCanFly=False)

以下の部分が自分で追加したナビデータクラスです。
クラス定義には/Script/[プロジェクト名].[プレフィックスなしのクラス名]となっています。

NavDataClass=/Script/TestProject.MyNavData

後はRecastNavmeshと同様に、以下のように上書きする定義をDefaultEngine.iniに追加します。
こうすることでカスタムクラスのデフォルト値を反映することができます。

[/Script/TestProject.MyNavData]
CellSize=100.f

まとめ

 ナビメッシュを生成するために必要なパラメータ(NavDataのパラメータ)は、レベル上に配置されたRecastNavmeshの設定を直接編集することが可能なため、レベル毎に異なる設定値を保存することもできます。

 これは一見便利ですが、同じエージェントであってもレベルによって挙動が変わるという可能性もあり得ることになるため、統一性の観点でも極力エージェントの設定はProject Settingsで設定が統一されることが望ましいです。

1
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
1
0