05_ue4进阶末日生存游戏开发[旋转的实现]

pitch,yaw,roll的旋转方式

1.怎样用鼠标控制人物旋转呢?

进入小白人的蓝图,单机self。

 这个打勾,使用controller的旋转yaw

测试,成功。但是这种方式很生硬。添加一点延迟效果,就可以了。

先勾掉。

 点击charactermovement组件

 为什么这个组件没有和上面的组件在一起呢,因为这个运动组件是抽像的,没有实体的。

 调小旋转速率到300,第一个打勾,第二个取消勾。

 继续优化,当我鼠标转到一定程度,小人才开始转,鼠标微小转动,小人不转。也就是说人物朝向与playercontroller的朝向有一定角度偏差,人物才开始转动。

所以该如何实现呢?

思路:如果当角度大于80°时,会打这个勾,人物就开始转动。当角度小于80°时,这个勾就取消,人物就停止转动。

1)获得人物的朝向,我们可以用碰撞盒子的朝向来代替人物的朝向。(也可用别的朝向,这个没有标准做法)

 添加人物旋转图表

拖入碰撞盒子

获得朝向

2)获取控制这个人物的controller 

这个不太好,因为这个方法作用范围有点大,可以获得别的角色的控制器。

所以我们用这个

得到controller的朝向

 3)获得两个朝向的角度差

4)这个差是一个向量,我们将其分解开

 当yaw的角度绝对值大于80,就旋转 

5)每一帧都要判断夹角,所以要添加每一帧事件,然后判断是否需要旋转。

6)将运动组件拉入蓝图,设置参数,真的打勾,假的就取消勾

 

7)编译,测试,但是这样依然很死板,我们希望小白人转向的时候一直转到夹角为0.

 编译测试,奔跑的情况下会遇到这种情况,controller与小人移动的方向不一样。

 8)所以我们应该在小白人移动的时候,让小白人与我们的controller同向。(移动时候打勾)

以下是小白人的原始行动代码

 我们要进行改进

首先获得事件输入的名称。

 判断这两个输入是否不为0,如果其中一个不为0,那么就说明小白人是在移动,所以小白人的方向要跟随controller的方向。

为每一帧事件添加一个sequence节点,就是第一次执行0,第二次执行1,依次+1并循环。

 

then1连接我们新写的分支。

测试成功

为了让蓝图更简洁,让控制角度的蓝图折叠起来

 变成了大的节点

 重命名

 同理,压缩了另一个大节点

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的阅读机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值