虚幻引擎UE5专用服务器游戏开发-06添加移动输入操作

1.创建输入动作:

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Input", meta = (AllowPrivateAccess = "true"))
	TObjectPtr<UInputAction> InputAction_Move;

2.创建回调函数:

	void HandleMoveInput(const FInputActionValue& InputActionValue);

3.绑定输入动作、回调函数:

EnhancedInputComponent->BindAction(InputAction_Move, ETriggerEvent::Triggered, this, &ACPlayerCharacter::HandleMoveInput);

4.实现回调函数:

void ACPlayerCharacter::HandleMoveInput(const FInputActionValue& InputActionValue)
{
	//获取鼠标轴二维向量
	const FVector2D InputValue = InputActionValue.Get<FVector2D>();
	//结果归一化
	InputValue.GetSafeNormal();

	AddMovementInput(GetMoveForwardDir()*InputValue.Y+GetLookRightDir()*InputValue.X);
}

FVector ACPlayerCharacter::GetLookRightDir() const
{
	return FollowCamera->GetRightVector();
}

FVector ACPlayerCharacter::GetLookForwardDir() const
{
	return FollowCamera->GetForwardVector();
}

FVector ACPlayerCharacter::GetMoveForwardDir() const
{
	return FVector::CrossProduct(GetLookRightDir(), FVector::UpVector);
}

这段代码实现了虚幻引擎中基于摄像机视角的角色移动控制逻辑,主要功能包括:

输入处理

  • HandleMoveInput方法通过FInputActionValue获取二维输入向量
  • 使用GetSafeNormal()对输入向量进行归一化处理,确保移动速度不受输入幅度影响

方向计算

  • GetLookRightDir返回摄像机右方向向量,用于水平移动
  • GetLookForwardDir返回摄像机前方向向量(虽然代码中未直接使用)
  • GetMoveForwardDir通过叉积计算地面移动方向(摄像机右向量×世界向上向量)

移动合成

  • 最终通过AddMovementInput将垂直(Y)和水平(X)输入分量分别与对应方向向量相乘后相加
  • 这种实现方式使角色移动方向始终与摄像机视角保持相对一致

典型应用场景是第一/第三人称角色控制器,其中移动方向会随摄像机旋转而变化。代码中通过向量运算实现了视角相关的移动控制,是UE中处理角色移动的常见模式。

其中:

InputValue.GetSafeNormal();
TVector2<T> GetSafeNormal(T Tolerance=UE_SMALL_NUMBER) const;

这是一个典型的模板函数声明,用于获取二维向量的安全归一化结果。以下是关键点分析:

模板参数

  • T表示泛型类型参数,支持不同数值类型(如float/double)的向量计算。

函数功能

  • 对向量进行归一化(单位化)处理,返回长度为1的同方向向量。
  • 通过Tolerance参数(默认值为引擎常量UE_SMALL_NUMBER)避免除零错误:当向量长度小于该阈值时,可能返回零向量或特定默认值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值