UE4 C++(4):区分ControllerRotation和ActorRotation

09/20/2020,03/24/2021

前言

区分ControllRotation和ActorRotation

  1. ControllerRotation表示PlayerController的方位,PlayerController和PlayerCameraMenager会在游戏开始的时候生成
  2. ActorRotation表示RootComponent的方位

UE4基础

UE4使用的是左手坐标系

欧拉角

欧拉角是什么,欧拉角用来描述一个物体的方位,即朝向。

例子1:

首先明确坐标轴属性,什么颜色对应什么轴,红色对应X轴的旋转量,绿色对应Y州的旋转量,蓝色对应Z轴的旋转量。
矩形物体
由FRotator 保存:

  • Pitch:俯仰(上下看)— Y轴
  • Yaw:偏航(左右看) — Z轴
  • Roll:翻转(旋转)—X轴

注意:Roll-Pitch-Yaw组合(X-Y-Z轴),强烈建议记住英语单词的意思。

Roll-Pitch-Yaw(XYZ)
第二部分表达UE4的旋转功能,当前三个轴的旋转量都为0
UE4 旋转部分
如果顺时针转动蓝色网格时候,Z轴将会变大,如果是逆时针转动,Z轴的旋转量将会变小。

绕Z轴顺时针旋转45°的情形:
绕Z轴顺时针旋转45°

欧拉角和旋转矩阵是可以相互转换的

在本地坐标系中,我们发现X,Y,Z轴出现了方位的变化,它们的值需要通过旋转矩阵才能知道,它们值还可以通过GetForwardVector,GetRightVector和GetUpVector函数得到。

下面是绕Z轴顺时针旋转45°得到的旋转矩阵图
旋转矩阵

关闭人物的旋转和ControlRotation一致

这个表示ControlRotation旋转,人物自身的ActorRotation也会旋转。可以在Character蓝图属性中找到

旋转

开启镜头随着鼠标移动

设置弹簧臂,我们需要让弹簧臂使用Pawn身上的ControllerRotation来转动自身,即用PlayerController控制弹簧臂
UsePawnCOntrolRotation

开启人物随着加速度方向旋转

在CharacterMovment中,有一个Orient Rotation to Movement,表示人物ActorRotation将会随着加速度方向而变动,旋转速率可以调节
Orient Rotation to Movement

MoveForward(ControllerRotation)

这边使用的是ControllerRotation的旋转量,表示人物移动的方向是跟着眼睛的方向走动的

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值