【虚幻引擎UE5】SpawnActor生成Character实例不执行AI Move To,未初始化AIController的原因和解决方法

虚幻引擎版本:5.5.4

问题描述

刚创建的Third Person项目里,定义一个BP_Enemy蓝图,拖拽到场景中产生的实例会追随玩家,但SpawnActor产生的实例会固定不动。BP_Enemy蓝图具体设计如下:
BP_Enemy的Event Graph

又定义了一个Actor蓝图BP_SpawnEnemy,在场景中随机半径内根据BP_Enemy蓝图生成实例,BP_SpawnEnemy蓝图具体设计如下:
BP_SpawnEnemy的Event Graph

场景中也添加了NavMeshBoundsVolume覆盖,将BP_SpawnEnemy放置在场景中时产生的BP_Enemy实例静止不动,如下图。

可能原因

  1. AI Move To节点没有生效

  2. SpawnActor产生的实例没有激活,不会执行BeginPlay

  3. AI Move To节点的输入有问题

  4. NavMeshBoundsVolume设置有问题

分析过程

问题的关键在于:拖拽到场景中的实例和通过SpawnActor产生的实力有什么区别?

通过在不同的节点前添加Print String节点,可以发现AI Move To的On Success和On Fail都没有执行,怀疑过是不是异步操作的原因,但更大的可能性是输入存在问题,在AI Move To节点前添加Print String节点打印发现输入都很正常,Pawn和TargetActor能获取DisplayedName,即表明成功获取到实例引用,其他还会是什么输入出现问题呢?

在两天与豆包的交流里它多次提起"AIController异常"的问题,查看BP_Enemy蓝图里"AI Controller Class"发现设置成功,在SpawnActor后获取实例并打印其AIController,Is Valid节点判断为false,果然是没有初始化。在知乎里查到这样一个设置"Auto Possess AI",看了选项恍然大悟,该设置用来定义角色的AIController在什么场景下初始化。

根本原因

配置问题,AIController没有初始化。

解决方案

在BP_Enemy蓝图中,确认"AI Controller Class"配置是否设为"AIController",并修改配置"Auto Possess AI"是否设置正确,各选项含义如下:

  1. Disabled 不自动初始化AI Controller

  2. Placed in world 当实例在场景初始化时就被放置在场景中,自动初始化AI Controller

  3. Spawned 当实例是被生成出来的,生成时自动初始化AI Controller

  4. Placed in world or spawned 无论实例是被放置或被生成出来的,都会自动初始化AI Controller

相关推荐
爱搞虚幻的阿恺13 天前
Niagara粒子系统-超炫酷的闪电特效(加餐 纸牌螺旋上升效果)
游戏·游戏引擎
_Li.13 天前
Simulink - 6DOF (Euler Angles)
人工智能·算法·机器学习·游戏引擎·cocos2d
weixin_4242946713 天前
Unity 调用Steamworks API 的 SteamUserStats.RequestCurrentStats()报错
unity·游戏引擎·steamwork
HoFunGames13 天前
Unity小地图,Easy Minimap System MT-GPS插件
unity·游戏引擎
wy32586436413 天前
Unity 新输入系统InputSystem(基本操作)
unity·c#·游戏引擎
zhangzhangkeji13 天前
UE5 C++(71):文件是否存在,文件夹是否存在,FPaths :: FileExists( const FString & InPath) ;
ue5
星和月13 天前
Untiy使用说明
c#·游戏引擎
妙为13 天前
UE5角色穿过石头穿模
ue5·unreal engine5·角色穿越石头·穿模
小菱形_13 天前
【Unity】TimeLine
unity·游戏引擎
weixin_4242946714 天前
Unity 使用Steamworks.NET
unity·游戏引擎