UE5.2.1C++第三人称项目怎么利用纯代码写固定俯视角和wasd移动,不需要跳跃
3条回答 默认 最新
檀越@新空间 2024-03-05 18:18关注Woody_Dark 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5要在UE5.2.1的C++第三人称项目中实现固定俯视角和WASD移动,你可以按照以下步骤进行操作:
-
创建一个C++类,用于处理角色的控制逻辑。你可以选择继承自
ACharacter类,这样你就可以使用UE提供的角色控制器。 -
在你的C++类中,添加成员变量来保存俯视角度和移动速度等相关参数。例如:
float CameraPitch; float MoveSpeed;-
重写角色类的
Tick函数,该函数在每一帧都会被调用。在函数内部,你可以通过输入设备获取玩家输入,并更新角色的移动和视角。 -
在
Tick函数中,使用GetWorld()->GetFirstPlayerController()->PlayerInput->GetKeyValue方法获取WASD按键的状态,根据按键状态和玩家输入来修改角色的位置。例如:
float ForwardInputValue = GetWorld()->GetFirstPlayerController()->PlayerInput->GetKeyValue(EKeys::W) - GetWorld()->GetFirstPlayerController()->PlayerInput->GetKeyValue(EKeys::S); float RightInputValue = GetWorld()->GetFirstPlayerController()->PlayerInput->GetKeyValue(EKeys::D) - GetWorld()->GetFirstPlayerController()->PlayerInput->GetKeyValue(EKeys::A); FVector NewLocation = GetActorLocation() + GetActorForwardVector() * ForwardInputValue * MoveSpeed * DeltaTime; NewLocation += GetActorRightVector() * RightInputValue * MoveSpeed * DeltaTime; SetActorLocation(NewLocation);- 同样在
Tick函数中,使用GetWorld()->GetFirstPlayerController()->PlayerInput->GetMousePosition方法获取鼠标的位置,并根据鼠标位置来更新视角。例如:
FVector2D MousePosition; GetWorld()->GetFirstPlayerController()->PlayerInput->GetMousePosition(MousePosition.X, MousePosition.Y); CameraPitch += MousePosition.Y * Sensitivity * DeltaTime; // 根据鼠标位置更新俯仰角 CameraPitch = FMath::Clamp(CameraPitch, MinPitch, MaxPitch); // 对俯仰角进行最小值和最大值限制 FRotator NewRotation = FRotator(CameraPitch, GetActorRotation().Yaw, 0.0f); // 创建新的角度 GetController()->SetControlRotation(NewRotation); // 更新角度-
将创建的C++类设置为角色的控制器类。在UE编辑器的Details面板中,找到Character类的Controller Class属性,并将其设置为你创建的C++类。
-
编译并运行项目,你应该能够通过WASD键控制角色的移动,并通过鼠标控制视角的俯仰角度。
请注意,上述代码仅为示例,实际使用时可能需要根据你的需求进行修改。
解决 无用评论 打赏 举报-