만들어둔 추상화된 동작은 Move, Look, Sprint, Jump 총 4개다 Character에서 Controller와 연동시켜야 하는데 이미 구현된 함수가 있기 때문에 그렇게 어렵지 않다.
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override 이 함수에서 바인드시켜주면 된다.
void ASpartaCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
UEnhancedInputComponent* EnhancedInput = Cast<UEnhancedInputComponent>(PlayerInputComponent);
if (EnhancedInput==nullptr)
{
return;
}
ASpartaPlayerController* PlayerController = Cast<ASpartaPlayerController>(GetController());
if (PlayerController==nullptr)
{
return;
}
EnhancedInput->BindAction(
PlayerController->MoveAction,
ETriggerEvent::Triggered,
this,
&ASpartaCharacter::Move);
EnhancedInput->BindAction(
PlayerController->SprintAction,
ETriggerEvent::Triggered,
this,
&ASpartaCharacter::StartSprint);
EnhancedInput->BindAction(
PlayerController->SprintAction,
ETriggerEvent::Completed,
this,
&ASpartaCharacter::StopSprint);
EnhancedInput->BindAction(
PlayerController->LookAction,
ETriggerEvent::Triggered,
this,
&ASpartaCharacter::Look);
EnhancedInput->BindAction(
PlayerController->JumpAction,
ETriggerEvent::Triggered,
this,
&ASpartaCharacter::StartJump);
EnhancedInput->BindAction(
PlayerController->JumpAction,
ETriggerEvent::Completed,
this,
&ASpartaCharacter::StopJump);
}
Character에는 MovementComponent가 내장되어 있기 때문에 해당 클래스를 상속받은 객체는 그냥 사용하면 된다.
주로 사용하는 MovementComponent의 함수는 다음과같다.