22 角色控制之角色移动与跳跃

黑神话 悟空

在游戏开发中,角色的移动和跳跃是让玩家体验互动的重要部分。本节教程将重点关注在UE5(虚幻引擎5)中实现角色的移动与跳跃功能,这里我们将利用上篇的输入管理与设置来更深入地探讨如何控制角色的行为。

基础概念

在开发角色移动与跳跃之前,我们需要理解几个基本概念:

  • 角色控制器(Character Controller):负责处理角色的运动逻辑。
  • 输入管理(Input Management):响应玩家的输入信号,以控制角色的行为。
  • 物理引擎:用于处理角色的碰撞和重力。

角色移动实现

创建角色蓝图

首先,确保你已经创建了一个 Character 类的蓝图。以下是创建蓝图的步骤:

  1. 在内容浏览器中,右键点击,选择 Blueprint Class
  2. 选择 Character 类。
  3. 命名你的蓝图,例如 MyCharacter

设置运动输入

根据上篇教程中的输入管理设置,你应该已经配置了基础的输入轴。这里主要说明如何利用这些输入来实现角色移动。

打开你的角色蓝图,进入蓝图编辑器的 Event Graph

实现前后移动

首先,我们需要响应前后的运动输入。通常会使用“前后”轴的输入来控制角色的移动。

1
2
3
4
5
6
7
8
9
10
// 角色蓝图中的事件图
// 获取输入轴值
float ForwardValue = InputAxisValue("MoveForward");
float RightValue = InputAxisValue("MoveRight");

// 计算移动方向(使用角色的前向向量和右向向量)
FVector Direction = (GetActorForwardVector() * ForwardValue + GetActorRightVector() * RightValue).GetSafeNormal();

// 移动角色
AddMovementInput(Direction);

实现左右旋转

为了让角色在移动时能够顺利旋转,我们可以使用类似的输入设置。

1
2
3
// 旋转角色
FRotator NewRotation = FRotator(0.0f, MouseX * Sensitivity, 0.0f);
AddActorLocalRotation(NewRotation);

在这里,MouseX 代表从鼠标输入中获取的水平移动值。

跳跃实现

角色的跳跃通常需要更复杂的逻辑。除了处理输入,我们还需要确保角色在跳跃过程中受重力影响。

跳跃输入设置

确保在输入设置中定义了一个用于跳跃的操作。例如,叫做 Jump。在 MyCharacter 角色蓝图的 Event Graph 中添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
// 监听跳跃输入
InputAction JumpPressed
{
ACharacter::Jump();
}

// 取消跳跃
InputAction JumpReleased
{
ACharacter::StopJumping();
}

在这里,ACharacter::Jump()ACharacter::StopJumping() 是内置的角色跳跃方法,它们将会处理角色的跳跃和落地逻辑。

跳跃物理

要确保角色在跳跃时遵循物理规则,确认你在角色设置中配置了合理的重力设置。可以通过设置 Character Movement 组件的重力缩放来控制跳跃的高度。

实战案例

为了更生动的展示角色的移动与跳跃逻辑,以下是一个简单的演示场景:

  1. 创建一个简单的地形(Terrain),并在上面放置一些平台。
  2. MyCharacter 控制的角色在这些平台上进行移动和跳跃。
  3. 观察跳跃的高度,以及重力对角色的影响。

完整代码示例

以下是一个完整的角色控制蓝图示例,包含了前后移动和跳跃的逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);

PlayerInputComponent->BindAxis("MoveForward", this, &AMyCharacter::MoveForward);
PlayerInputComponent->BindAxis("MoveRight", this, &AMyCharacter::MoveRight);
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &AMyCharacter::StartJump);
PlayerInputComponent->BindAction("Jump", IE_Released, this, &AMyCharacter::StopJump);
}

void AMyCharacter::MoveForward(float Value)
{
addMovementInput(GetActorForwardVector(), Value);
}

void AMyCharacter::MoveRight(float Value)
{
addMovementInput(GetActorRightVector(), Value);
}

void AMyCharacter::StartJump()
{
Jump();
}

void AMyCharacter::StopJump()
{
StopJumping();
}

通过这个代码示例,你可以完成基本的角色移动与跳跃功能。确保调整必要的输入轴和操作,使得玩家体验更加自然。

总结

本篇教程介绍了如何在 UE5 中实现角色的移动与跳跃功能。我们利用了输入管理系统,并创建了一些基础逻辑来响应玩家的输入。下篇我们将讨论如何在角色中实现动画系统,来丰富角色的表现力。希望你能够在实际操作中不断探索并完善你的角色控制逻辑!

22 角色控制之角色移动与跳跃

https://zglg.work/ue5-game-zero/22/

作者

IT教程网(郭震)

发布于

2024-08-23

更新于

2024-08-23

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论