아래와 같이 바인딩해준다 / Edit > Project Settings > Input
아래 옵션은 메쉬가 컨트롤러 회전값에 따라 회전하지 않도록 설정함으로 끄는게 중요하다
bUseControllerRotationYaw = bUseControllerRotationPitch = bUseControllerRotationRoll = false;
// 아래는 이동을 담당하는 컴포넌트 조작 방법
auto characterMovement = GetCharacterMovement();
characterMovement->bOrientRotationToMovement = true;
// 바라보는 방향으로 회전하고자 하는 속도
characterMovement->RotationRate = FRotator(0.f, 400.f, 0.f);
아래는 SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) 함수 설정 방법이다
PlayerInputComponent->BindAxis("MoveBackForward", this, &클래스명::MoveBackForward);
PlayerInputComponent->BindAxis("MoveLeftRight", this, &클래스명::MoveLeftRight);
PlayerInputComponent->BindAxis("LookUpDown", this, &클래스명::LookUpDown);
PlayerInputComponent->BindAxis("LookLeftRight", this, &클래스명::LookLeftRight);
첫번째 방법으론 FRotationMatrix이 존재하고 두번째로는 메쉬가 바라보는 방향을 받아서 처리하는 방식이 있다.
void 클래스명::MoveBackForward(float val)
{
FRotator yawRot(0, GetControlRotation().Yaw, 0);
auto dir = FRotationMatrix(yawRot).GetUnitAxis(EAxis::X);
//this->AddMovementInput(dir, val);
this->AddMovementInput(GetActorForwardVector() * val);
}
void 클래스명::MoveLeftRight(float val)
{
FRotator yawRot(0, GetControlRotation().Yaw, 0);
auto dir = FRotationMatrix(yawRot).GetUnitAxis(EAxis::Y);
//this->AddMovementInput(dir, val);
this->AddMovementInput(GetActorRightVector() * val);
}
마우스에 따라 회전하는 방법
void 클래스명::LookUpDown(float val)
{
this->AddControllerPitchInput(-val);
}
void 클래스명::LookLeftRight(float val)
{
this->AddControllerYawInput(val);
}
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] Idle 애니메이션 무작위로 실행 (0) | 2023.06.11 |
---|---|
[Unreal] enum 타입을 FString 형태로 변환 (0) | 2023.06.11 |
[Unreal] Could not find NetFxSDK install dir; 오류 해결 (0) | 2023.04.23 |
[Unreal] 오브젝트 테두리 선 메터리얼로 구현 (0) | 2023.03.26 |
[Unreal] Construction Script (0) | 2022.12.15 |