구현해야할 이동 기능은 아래와 같다.
AddMovementInput() : 이동
AddControllerPitchInput() : 상하 시점
AddControllerYawInput() : 좌우 시점
Jump() : 점프
ShooterCharacter.h에 SetpuPlayerInputComponent() 함수가 있는것을 알 수 있는데, 이 함수 안에서 우리는 바인딩을 해주어야 한다.
바인딩을 하기 위해선 언리얼에 매핑된 TEXT(이름)과 함수가 필요하다.
// ShooterCharacter.cpp
void AShooterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAxis ...
}
※ 예전 버전임을 명심할것.
언리얼의 Project Settings > Engine - Input 에서 Axis, Action Mapping을 할 수 있다.
ShooterCharacter.h에서 MoveForward에 대한 함수를 만들어 주었다.
// ShooterCharacter.h
private:
void MoveForward(float AxisValue);
ShooterCharacter.cpp를 마저 작성하면 이렇게 된다.
void AShooterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAxis(TEXT("MoveForward"), this, AShooterCharacter::MoveForward);
}
void AShooterCharacter::MoveForward(float AxisValue)
{
AddMovementInput(GetActorForwardVector() * AxisValue);
}
AddControllerPitchInput()와 AddControllerYawInput() 을 이용해서 상하 시야를 구현해 보겠다.
(RotationRate 처리는 추후에 나오지만 미리 적용하였다.
// ShooterCharacter.h
private:
void LookUpRate(float AxisValue);
void LookRightRate(float AxisValue);
UPROPERTY(EditAnywhere)
float RotationRate = 70;
// ShooterCharacter.cpp
// Called to bind functionality to input
void AShooterCharacter::SetupPlayerInputComponent(UInputComponent *PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
...
PlayerInputComponent->BindAxis(TEXT("LookUpRate"), this, &AShooterCharacter::LookUpRate);
PlayerInputComponent->BindAxis(TEXT("LookRightRate"), this, &AShooterCharacter::LookRightRate);
}
void AShooterCharacter::LookUpRate(float AxisValue)
{
AddControllerPitchInput(AxisValue * RotationRate * GetWorld()->GetDeltaSeconds());
}
void AShooterCharacter::LookRightRate(float AxisValue)
{
AddControllerYawInput(AxisValue * RotationRate * GetWorld()->GetDeltaSeconds());
}
Jump의 경우는 Character.h에 선언되어 있는 점프를 사용해서 바인딩 하였다.
PlayerInputComponent->BindAction(TEXT("Jump"), EInputEvent::IE_Pressed, this, &ACharacter::Jump);
'Unreal 공부 > UE5 GameDev' 카테고리의 다른 글
[UE5] 향상된 입력 사용하기, Enhanced Input (1) | 2023.12.23 |
---|---|
[UE5] ToonTank (3) (0) | 2023.11.29 |
[UE5] ToonTank (2) (0) | 2023.11.19 |
[UE5] ToonTank (1) (0) | 2023.11.17 |
[UE5][개념편] ToonTank (0) | 2023.11.17 |