Delta应用三——AI保持锁定玩家状态下,实现移动混合

    契机:制作AI动作混合的时候发现一个问题,由于没有ControlRotation值可以用。

(AI的ControlRotation和自身Pawn的Rotation值一致,不像玩家可以用鼠标来控制ControlRotation)

导致制作AI的四方向移动混合,不能使用玩家移动混合的思路,于是有了以下的想法。

 

先看下最终效果: 

动作大致实现要求,AI在保持锁定玩家的状态下可以前后左右移动,动作混合也比较正确的播放出来。

    接下来说下思路过程。四方向的动作混合首要问题是如何把方向计算出来。

最开始想用Calculate Direction这个节点--->但是出现了问题,之前说过AI的旋转始终是自己的旋转,不同于玩家还有一个Control旋转可以计算方向,行不通,出现了比较鬼畜的动作。

    于是开始老老实实计算,上一篇中有提到Delta这个节点可以算旋转差量,同理也能够用来判断AI移动的方向。

而方向,AI的移动方向有一个值可以提供----Velocity,这个值表示物理对象或者有移动组件的对象 带方向的速度它的长度就是我们通常说的速度值了。

现在我们获得了第一个向量,接下来只需要和角色自身的正方向进行计算即可,算之前现将向量转为X正方向的旋转值。

计算Direction过程如下

Z值就是我们需要的旋转值,这里会出现一个问题。就是当velocity值为(0,0,0),也就是角色静止的时候。aiForwardVector不为零,delta计算还是有结果。于是干脆在后面又乘以了Velocity的长度,这样,当玩家静止的时候,direction值为0,开始移动的时候值正常输出。最后将这个Direction值给动画混合用来控制x轴,speed来控制Y轴

根据值的特性,可以知道0~90~180 是站立~右移动~后退。0~-90~-180是站立,左移动,后退。那么就可以做出动作混合了

附上动作混合:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值