新建C++类,选择父类为Character,改名为PacManCharacter 公有,
解决报红:
#include "PacManCharacter.h"
改成:
#include "Public/PacManCharacter.h"
创建Actor类和Character类的区别
Character类.h文件里面有:
Virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) overridee;
输入与某个键绑定的
如何绑定:
回到Unreal编辑器里面,选择【编辑】---【项目设置】,在【引擎】下面有【输入】
在这里绑定
Bindings
Action Mappings(行为映射)
Axis Mappings(轴映射)
动作和按键映射提供了一种通过在输入行为和激活该行为的按键之间插入一个中间层来方便地映射按键和坐标轴的机制。
动作映射针对按键按下和释放,而坐标轴则针对具有连续范围的输入。
比如:
跳起来,按一下空格键,动作映射;
移动,按住前进键,一直向某个方向移动,需要连续范围的输入,轴映射。
动作映射 返回 true 和 false;
轴映射 返回 -1 到 1 之间的值
添加Axis Mappings +
左为负,右为正;
人为规定,所以修改向左键为-1
添加向右键:
添加Y轴方向的移动:
在PacManCharacter.h 文件中,添加
void MoveXAxis(float AxisValue);
void MoveYAxis(float AxisValue);
// 定义一个向量
FVector CurrentVelocity;
在 PacManCharacter.cpp 中
APacManCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
// 第一个参数,绑定的轴的名字,与编辑器里面对应的;
// 第二个参数,this,绑定这个类上;
// 第三个参数,绑定的哪个函数
// InputComponent 报红,引入#include "Components/InputComponent.h"头文件解决
InputComponent->BindAxis("MoveX", this, APacManCharacter::MoveXAxis);
InputComponent->BindAxis("MoveY", this, APacManCharacter::MoveYAxis);
}
void APacManCharacter::MoveXAxis(float AxisValue)
{
CurrentVelocity.X = AxisValue;
AddMovementInput(CurrentVelocity);
}
void APacManCharacter::MoveYAxis(float AxisValue)
{
CurrentVelocity.Y = AxisValue;
AddMovementInput(CurrentVelocity);
}