# 【Unreal坐标系】

# 左右手与朝向

左手系

Z↑

Markdown 图片

参考

# 轴与方向

Unreal的设计基于第一人称视觉:

X轴正方向表示向前

Y轴正方向表示向右

Z轴正方向表示向上

# Roll Pithch Yaw

左手握X轴->Roll

左手握Y轴->Pithch

左手握Z轴->Yaw

Markdown 图片

# Rotator

在UE5中,Rotator表示欧拉角(Euler Angle),用于描述对象的旋转。Rotator包含Pitch、Yaw和Roll三个值,分别对应X、Y和Z轴的旋转。

以下是使用盘旋值Yaw获取向前方向的Vector示例:

void ABlasterCharacter::MoveForward(float Value)
{
	if(Controller != nullptr && Value != 0.f)
	{
		// 获取控制器的盘旋值
		const FRotator YawRotation(0.f, Controller->GetControlRotation().Yaw, 0.f);
		// 获取盘旋值对应的X方向(前)转为方向
		const FVector Direction(FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X));
		// 给角色进行移动
		AddMovementInput(Direction, Value);
	}
}

下面是根据角色速度获取 Rotation(单位度,值范围-180~180)值的示例:

#include "Kismet/KismetMathLibrary.h" 

FRotator MovementRotation = UKismetMathLibrary::MakeRotFromX(BlasterCharacter->GetVelocity());
UE_LOG(LogTemp,Warning,TEXT("MovementRotation Yaw %f:"), MovementRotation.Yaw);