【UE4 AI】AI Move To寻路转向时解决突变、使得平滑过渡的方法(含C++)

28 篇文章 11 订阅

目录

修改效果对比

问题阐述

蓝图解决设置

C++解决设置


修改效果对比

修改前存在突变
修改后存在过渡(参数可调)

问题阐述

通过观察NPC的寻路不管使用 行为树的Move To任务节点 还是 蓝图中的AI移动到节点,在寻路目标点与当前NPC朝向角度存在差距时,都会有明显的旋转突变,速度过快导致角色瞬间转向下个目标点的方向,使得动画十分突兀。即使通过控制台命令Slomo 0.1放慢10倍观察,也十分明显。

为测试编写的简单的AI寻路逻辑(可忽略)

因而这一定是对于旋转未做类似Lerp的平滑过渡处理,通过百度发现很难找到想要的答案,于是在UE4 AnswerHub、Google、Unreal Forum、Youtube类似网站寻找国外大牛的解决方案,毕竟国外游戏开发环境好(安利给入坑的小白一条解决问题的方式)。

蓝图解决设置

修改寻路的Character蓝图类下——CharacterMovement组件中——Rotation Settings内的参数

如你所见,勾选Orient Rotation to Movement,根据提示需要去掉Pawn下默认为true的Use Conroller Rotation Yaw

大功告成,现在执行你的AI可以看到过渡效果。如果不确定是否有效,可以将Rotation Rate下的Z变换设为0,若NPC不能转向,则说明修改是有效的。

C++解决设置

在你的AI Character类的构造器下,修改如下参数

//Make AI rotate smoothly(avoid snapping)
bUseControllerRotationYaw = false; //prepare for orient rotation to movement
GetCharacterMovement()->bOrientRotationToMovement = true;
float YawRotateRate = 360.f;
GetCharacterMovement()->RotationRate = FRotator(0, 0, YawRotateRate);

注意使用GetCharacterMovement函数时,需要添加下面的头文件

#include "GameFramework/CharacterMovementComponent.h"

 

  • 31
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值