UE4 C++学习笔记之控制Pawn的视角

任务:使用鼠标控制Pawn的Yow转向,已经Pictch的视角旋转

第一步、项目设置添加鼠标X,Y轴输入

第二步、修改Pawn类相关C++代码

Creature.h关键代码如下:

private:
        //2D向量储存鼠标的输入
        FVector2D CameraInput;

        //接收Yaw旋转
	void CameraYaw(float Value);
        //接收Pictch旋转
	void CameraPitch(float Value);

Creature.cpp关键代码如下:

1、构造函数初始化CameraInput向量

	CameraInput = FVector2D(0.f,0.f);

2、实现CameraYaw,CameraPitch函数

void ACreature::CameraYaw(float Value)
{
	CameraInput.X = Value;
}

void ACreature::CameraPitch(float Value)
{
	CameraInput.Y = Value;
}

3、将CameraYaw,CameraPitch函数和鼠标输入绑定

void ACreature::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

	PlayerInputComponent->BindAxis("CameraPitch", this, &ACreature::CameraPitch);
	PlayerInputComponent->BindAxis("CameraYaw", this, &ACreature::CameraYaw);
}

4、每一帧根据CameraInput来控制Pawn的镜头

void ACreature::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
        //将Camerainput.X和Pawn的旋转绑定,达到控制左右旋转的效果
	FRotator NewRotator = GetActorRotation();
	NewRotator.Yaw += CameraInput.X;
	SetActorRotation(NewRotator);

        //当使用Yaw转向时,我们不希望Pawn本体旋转,所以将CameraInput.Y绑定在弹簧臂上,同时为了避免欧拉角带来的游戏BUG,将其旋转限定在-80到+80之间
	FRotator SpringArmRotator = SpringArm->GetComponentRotation();
	SpringArmRotator.Pitch += CameraInput.Y;
	SpringArmRotator.Pitch = FMath::Clamp(SpringArmRotator.Pitch, -80.f, 80.f);
	SpringArm->SetWorldRotation(SpringArmRotator);
}

猜你喜欢

转载自blog.csdn.net/weixin_44928892/article/details/108062181