本文主要是介绍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连接我们新写的分支。
测试成功
为了让蓝图更简洁,让控制角度的蓝图折叠起来
变成了大的节点
重命名
同理,压缩了另一个大节点
这篇关于05_ue4进阶末日生存游戏开发[旋转的实现]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!