언리얼 엔진 공식 문서 - UE4 의 입력 동작 및 축 매핑
1. Key Binding 설정하기
Project Setting
에서Engine - Input
을 통해 키 바인딩 세팅을 할 수 있다.
- 키를 누르지 않음:
0
반환 - 키를 누름:
1
반환
2. C++을 이용하여 Pawn에 Key Binding하기
Pawn
클래스 내SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
메소드가 있는데
이 메소드의 파라미터 값을 통해 Binding 한다
void ATESTPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
/*
* BindAxis 파라미터
* TEXT("MoveForward") -> Project Setting 내 `Engine - Input`에서 설정한 이름 설정
* this -> 바인딩할 오브젝트
* &ATESTPawn::MoveForward -> 키 값을 적용할 메소드명
*/
PlayerInputComponent->BindAxis(TEXT("MoveForward"),this,&ATESTPawn::MoveForward);
}
// 1번에서 세팅한 MoveForward에 대한 값이 value 파라미터로 들어온다.
void ATESTPawn::MoveForward(float value)
{
}
W, S로 움직여보자
- 생성한
Pawn
클래스 헤더파일에velocity
와speed
변수를 생성한다.
UPROPERTY(VisibleAnywhere,Category ="TEST Val")
FVector velocity;
UPROPERTY(EditAnywhere,Category="TEST Val")
float speed = 100.f;
.cpp
파일에 아래와 같이 작성한다.
// Called every frame
void ATESTPawn::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// (현재 Actor의 위치 + 입력 값) 을 새 Actor 위치로 세팅한다.
SetActorLocation(GetActorLocation() + (velocity * DeltaTime));
}
// Called to bind functionality to input
void ATESTPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAxis(TEXT("MoveForward"),this,&ATESTPawn::MoveForward);
}
void ATESTPawn::MoveForward(float value)
{
velocity.X = FMath::Clamp(value,-1.f,1.f) * speed;
}