【UE4】基础玩家视角的设置(SpringArm,Camera)

本文介绍了在UE4中如何设置基础玩家视角,通过在模型上添加SpringArm组件和Camera组件,调整它们之间的距离和SpringArm角度来控制摄像机视角。为实现鼠标控制视角,创建输入图表InputGraph,详细步骤包括导入输入LookH和LookV,使用SetRelativeRotation限制Y轴旋转范围,并通过Clamp设定最大最小值,确保视角不会扭曲。另外,文章还提及了一种不使用Scene的方法,但可能引发摄像机随物体移动的问题。

先在对应的模型里面加一个组件SpringArm,在其下添加一个Camera的组件


调节为Camera到SpringArm的距离

作为摇臂举着摄像机

通过调整SpringArm的角度来调整摄像机的角度,而不是直接调整摄像机的角度(比较方便视角控制)

接下来就设置输入(以鼠标控制为例)


新建一个输入图表InputGraph(作为所有输入的图表集合)

图表的设置步骤:

1、导入输入LookH(X),以及新的空场景Scene


2、I.因为LookV(Y)方向上要设置范围,所以选用的是SetRelativeRotation

     II.Y方向的目标为SpringArm,X方向上为Scene,两者不同才能分工合作,如果相同会导致视角扭曲



Clamp(设置最大最小值不超过某个区间)


//////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////

另外一种方法 :不使用Scene(移动物体(TankBody)时可能会导致摄像机跟着移动)

还是不要用这个了



在 Unreal Engine 5(UE5)中实现 Pawn 视角的移动控制,通常涉及到以下几个关键步骤。Pawn 是玩家或 AI 控制的角色的基类,可以包含摄像机、移动组件等关键功能。以下是实现 Pawn 视角移动控制的详细方法。 ### 1. 创建自定义 Pawn 类 首先,需要创建一个继承自 `Pawn` 的类。在 UE5 的内容浏览器中,右键点击并选择 **Blueprint Class**,然后选择 **Pawn** 作为父类。这样可以为 Pawn 添加自定义的摄像机和移动逻辑。 在 Pawn 类中,通常需要添加以下组件: - **摄像机组件(Camera Component)**:用于控制玩家视角。 - **移动组件(例如 `CharacterMovementComponent` 或 `SpringArmComponent`)**:用于实现 Pawn 的移动行为。 创建完成后,可以在该 Pawn 类中编写蓝图逻辑或 C++ 代码来控制视角和移动 [^4]。 ### 2. 设置摄像机视角 Pawn 类通常包含一个摄像机组件,该组件决定了玩家视角。可以通过以下方式设置摄像机: - 将摄像机组件附加到 Pawn 的根组件上。 - 调整摄像机的位置和旋转,以确保视角符合预期(例如第一人称或第三人称视角)。 - 如果需要实现第三人称视角,可以使用 `SpringArmComponent` 来控制摄像机的跟随行为 [^4]。 ### 3. 实现输入控制 为了实现 Pawn 的移动控制,需要绑定输入事件。在 UE5 中,可以通过以下方式实现: - 在 **Project Settings** 中配置输入映射(Input Mapping),例如 `WASD` 控制移动,`Mouse` 控制视角旋转。 - 在 Pawn 的蓝图中,使用 **InputAxis** 和 **InputAction** 节点来响应玩家的输入。 - 通过 **Add Movement Input** 节点,将输入转换为 Pawn 的移动方向 [^1]。 例如,在蓝图中可以使用以下逻辑: - 当按下 `W` 键时,Pawn 向前移动。 - 当按下 `A` 键时,Pawn 向左移动。 - 当移动鼠标时,Pawn 的摄像机旋转 [^1]。 ### 4. 使用 C++ 实现 Pawn 控制逻辑 如果使用 C++ 编写 Pawn 类,可以继承 `APawn` 并重写相关函数。以下是一个简单的示例代码: ```cpp #include "MyPawn.h" #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" #include "Components/InputComponent.h" AMyPawn::AMyPawn() { // 设置该 Pawn 的默认属性 PrimaryActorTick.bCanEverTick = true; // 创建根组件 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent")); // 创建摄像机臂 SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm")); SpringArm->SetupAttachment(RootComponent); SpringArm->TargetArmLength = 300.0f; // 设置摄像机距离 Pawn 的距离 SpringArm->bUsePawnControlRotation = true; // 创建摄像机 Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera")); Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName); Camera->bUsePawnControlRotation = false; // 创建移动组件 MovementComponent = CreateDefaultSubobject<UFloatingPawnMovement>(TEXT("MovementComponent")); } void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); // 绑定移动输入 PlayerInputComponent->BindAxis("MoveForward", this, &AMyPawn::MoveForward); PlayerInputComponent->BindAxis("MoveRight", this, &AMyPawn::MoveRight); // 绑定视角旋转输入 PlayerInputComponent->BindAxis("Turn", this, &APawn::AddControllerYawInput); PlayerInputComponent->BindAxis("LookUp", this, &APawn::AddControllerPitchInput); } void AMyPawn::MoveForward(float Value) { if (Value != 0.0f) { // 向前移动 AddMovementInput(GetActorForwardVector(), Value); } } void AMyPawn::MoveRight(float Value) { if (Value != 0.0f) { // 向右移动 AddMovementInput(GetActorRightVector(), Value); } } ``` ### 5. 设置游戏模式与 Pawn 生成 为了让游戏在运行时生成自定义的 Pawn,需要设置游戏模式(Game Mode)。在 UE5 的 **World Settings** 面板中,将 **Game Mode Override** 设置为自定义的游戏模式蓝图类。然后,在该游戏模式中设置 **Default Pawn Class** 为之前创建的 Pawn 类 [^4]。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值