09/20/2020,03/24/2021
文章目录
前言
区分ControllRotation和ActorRotation
- ControllerRotation表示PlayerController的方位,PlayerController和PlayerCameraMenager会在游戏开始的时候生成
- ActorRotation表示RootComponent的方位
UE4基础
UE4使用的是左手坐标系
欧拉角
欧拉角是什么,欧拉角用来描述一个物体的方位,即朝向。
例子1:
首先明确坐标轴属性,什么颜色对应什么轴,红色对应X轴的旋转量,绿色对应Y州的旋转量,蓝色对应Z轴的旋转量。
由FRotator 保存:
- Pitch:俯仰(上下看)— Y轴
- Yaw:偏航(左右看) — Z轴
- Roll:翻转(旋转)—X轴
注意:Roll-Pitch-Yaw组合(X-Y-Z轴),强烈建议记住英语单词的意思。
第二部分表达UE4的旋转功能,当前三个轴的旋转量都为0
如果顺时针转动蓝色网格时候,Z轴将会变大,如果是逆时针转动,Z轴的旋转量将会变小。
绕Z轴顺时针旋转45°的情形:
欧拉角和旋转矩阵是可以相互转换的
在本地坐标系中,我们发现X,Y,Z轴出现了方位的变化,它们的值需要通过旋转矩阵才能知道,它们值还可以通过GetForwardVector,GetRightVector和GetUpVector函数得到。
下面是绕Z轴顺时针旋转45°得到的旋转矩阵图:
关闭人物的旋转和ControlRotation一致
这个表示ControlRotation旋转,人物自身的ActorRotation也会旋转。可以在Character蓝图属性中找到
开启镜头随着鼠标移动
设置弹簧臂,我们需要让弹簧臂使用Pawn身上的ControllerRotation来转动自身,即用PlayerController控制弹簧臂
开启人物随着加速度方向旋转
在CharacterMovment中,有一个Orient Rotation to Movement,表示人物ActorRotation将会随着加速度方向而变动,旋转速率可以调节
MoveForward(ControllerRotation)
这边使用的是ControllerRotation的旋转量,表示人物移动的方向是跟着眼睛的方向走动的