UE4 导航网格

在C++中使用导航网格

引入导航NavigationSystem

要想使用这个导航网格,除了引用对应的命空间还要对应的build.cs文件中引入导航模块,
不然编译会报错,如下:

PublicDependencyModuleNames.AddRange(
			new string[] { 
				"Core", 
				"CoreUObject", 
				"Engine", 
				"InputCore" , 
				"NavigationSystem",	// 引入导航模块,不然编译报错
			});
获取当前的导航系统:

UNavigationSystemV1* const tNavgation = UNavigationSystemV1::GetCurrent(GetWorld());

在学习UE4 AI的时候遇到了没有导航数据NavData的问题记录下

问题引入:
  1. 在UE4中添加了NavMeshBoundsVolume之后,引擎会自动为我们构建Path,同时生成一个RecastNavMesh-Default
  2. 我们选中RecastNavMesh-Default,在Details面板->Generation中,我们可以调整Agent Radius,和Agent Height,这个是有如果编辑开启了自动更新Path,同时按了P键显示Path,我们就会看到Path随着我们的修改在改变。
  3. 我们在上面的步骤做了修改之后,然后运行你会发现,咦,AI傻了,咋不动了,我来断点试试,启用了AIDebugger,咋回事,怎么NavData没了,但是场景中明明有的呀,那我控制台打个命令show Navigation,呕吼Path咋没了喃。
问题分析:
  1. 既然Path没了,而且只是改了RecastNavMesh-Default的东西,那我再改回,发现不行。
  2. 那是不是因为自动更新有问题,我主动构建一下Path,也不行。
  3. 那我直接删了它吧,删了之后不会再自动生成了,那我在构建一下Path,好了。
  4. 综上就是这RecastNavMesh-Default里面的东西可以改,也会在编辑器里实时显示,但是在进行游戏的时候就不行了。推测Path的生成是根据Agent来计算的,RecastNavMesh-Default是根据之前设定好Agent数据生成的,我直接在RecastNavMesh-Default里修改Agent数据,然后因为Agent不一致导致了这个RecastNavMesh-Default失效了。
  5. 那我要生成不同的Path该怎么解决喃。
问题解决:
  1. 首先在ProjectSettings–>Navigation System–>Agents–>Supported Agents添加需要的Agent
  2. 在WorldSettings–>World–>NavigationSystemConfig–>DefaultAgentName中填入上一步设置的AgentName
  3. 在编辑中删除RecastNavMesh-Default,重新构建Path就可以了
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值