Home [UE4] 키 입력을 통해 Pawn 객체 움직이기
Post
Cancel

[UE4] 키 입력을 통해 Pawn 객체 움직이기

언리얼 엔진 공식 문서 - UE4 의 입력 동작 및 축 매핑

1. Key Binding 설정하기

  • Project Setting 에서 Engine - Input 을 통해 키 바인딩 세팅을 할 수 있다.

image

  • 키를 누르지 않음: 0 반환
  • 키를 누름: 1 반환


  • +버튼 클릭으로 바인딩을 추가할 수 있다.
    image

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클래스 헤더파일에 velocityspeed변수를 생성한다.
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;
}

결과

This post is licensed under CC BY 4.0 by the author.