Unreal C++ 使用键盘控制物体移动

本文具体操作的录屏视频:https://www.bilibili.com/video/BV1Ri4y1s7uN

1.创建项目
1.1打开EPIC Games,启动Unreal Engine 4.25.1。
1.2选择New Project Categories下面的Games,点击next。
1.3选择Blank,点击next。
1.4选择C++和with starter content,其它默认,工程命名MyProject,点击Create Project。

2.新建C++脚本,创建用于控制的物体和观察的摄像机
2.1新建C++,选择父类Pawn,点击next。
2.2命名MyPawn,点击Create Class。
2.3在MyPawn.h的脚本中,添加如下代码:
UPROPERTY(EditAnywhere)
USceneComponent* OurVisibleComponent;
2.4在MyPawn.cpp脚本的AMyPawn::AMyPawn中添加如下代码:
// 将该pawn设为由最小编号玩家控制
AutoPossessPlayer = EAutoReceiveInput::Player0;
// 创建可附加内容的虚拟根组件。
RootComponent = CreateDefaultSubobject(TEXT(“RootComponent”));
// 创建相机和可见对象
UCameraComponent* OurCamera = CreateDefaultSubobject(TEXT(“OurCamera”));
OurVisibleComponent = CreateDefaultSubobject(TEXT(“OurVisibleComponent”));
// 将相机和可见对象附加到根组件。偏移并旋转相机。
OurCamera->SetupAttachment(RootComponent);
OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f));
OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f));
OurVisibleComponent->SetupAttachment(RootComponent);
2.5并添加头文件
#include “Camera/CameraComponent.h”
2.6保存,并Build Solution。
2.7回到Unreal界面,将MyPawn脚本拖入,即可看到新建摄像机观察到的现象。
2.8选中刚拖入的物体,在details下选择OurVisibleComponent(Inherited),再在Static Mesh选择一个物体,例如Shape_Cone,即为我们后续能控制的物体。

3.设置输入对应的按键
3.1在Unreal界面点击edit->project settings->Engine->Input。
3.2在右侧Bindings下的Axis Mapping,添加MoveX对应按键W(Scale = 1)和S(Scale = -1),添加MoveY对应按键A(Scale = -1)和D(Scale = 1)。自动保存,直接关闭窗口即可。

4.输入控制物体移动代码
4.1在MyPawn.h申明函数和变量
//输入函数
void Move_XAxis(float AxisValue);
void Move_YAxis(float AxisValue);
//输入变量
FVector CurrentVelocity;
4.2在MyPawn.cpp定义函数
void AMyPawn::Move_XAxis(float AxisValue)
{
// 以100单位/秒的速度向前或向后移动
CurrentVelocity.X = FMath::Clamp(AxisValue, -1.0f, 1.0f) * 100.0f;
}

void AMyPawn::Move_YAxis(float AxisValue)
{
    // 以100单位/秒的速度向右或向左移动
    CurrentVelocity.Y = FMath::Clamp(AxisValue, -1.0f, 1.0f) * 100.0f;
}

4.3在AMyPawn::SetupPlayerInputComponent 中将按键和对应函数绑定
// 对两个移动轴“MoveX”和“MoveY”的值逐帧反应。
InputComponent->BindAxis(“MoveX”, this, &AMyPawn::Move_XAxis);
InputComponent->BindAxis(“MoveY”, this, &AMyPawn::Move_YAxis);
4.4在AMyPawn::Tick中添加
// 根据“MoveX”和“MoveY”轴处理移动
{
if (!CurrentVelocity.IsZero())
{
FVector NewLocation = GetActorLocation() + (CurrentVelocity * DeltaTime);
SetActorLocation(NewLocation);
}
}
4.5保存,Build Solution。回到Unreal界面点击Play,在用鼠标点一下窗口,就可以用WSAD控制物体移动了。

参考资料:
https://docs.unrealengine.com/zh-CN/Programming/Tutorials/PlayerInput/index.html
需要自己加一个头文件

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值