文章目录
创建一个组件
cpp
capsule = CreateDefaultSubobject<UCapsuleComponent>(TEXT("Capsule"));
设置一个组件为根物体
cpp
SetRootComponent(capsule);//参数,组件的指针
将一个组件设置为另一个组件的子物体
cpp
birdMesh->SetupAttachment(GetRootComponent());//参数1 父组件的指针,参数2 父组件的插槽名,默认值为没有插槽
绑定一个按键
首先在项目设置/引擎/输入/轴输入 里添加一个输入
然后需要创建一个pawn类,这样才会有绑定输入的函数
创建一个和输入匹配的函数
cpp
void ABird::MoveForward(float Value)//普通方法即可,不需要标记为UFUNCTION
{
UE_LOG(LogTemp,Warning,TEXT("Value:%f"),Value);
}
// Called to bind functionality to input
void ABird::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)//pawn类自带的可以绑定输入的函数
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent ->BindAxis("MoveForward", this, &ABird::MoveForward);//绑定输入
}
玩家移动
//配合上方的输入方法
cpp
void ABird::MoveForward(float Value)
{
if ((Controller != nullptr)&&(Value!= 0.f) )//Controller 由 pawn提供
{
FVector Forward = GetActorForwardVector();
AddMovementInput(Forward,Value);//pawn提供
}
}
此外,还要求Pawn添加一个movementInput组件,pawn不自带这个组件
