Enhanced Input #2

Ryan Ham·2024년 6월 23일
1

Unreal Engine

목록 보기
14/27

IA, IMC setting후 Character Class에 움직임과 화면 회전 함수 구현하기

void RyanCharacterPlayer::Move(const FInputActionValue& Value){
	FVector2D = MovementVector = Value.Get<FVector2D>();
    
    // 헷갈리게도 FVector()는 X,Y,Z가 순서대로 들어가지만 FRotater() 같은 경우는 Y,Z,X 순서로 input 값이 들어가게 된다. 
    // 단순히 Character의 Forward, Right Vector를 뽑아서 거기에 입력값을 추가하지 않는 이유는 우리는 Move를 통해 캐릭터가 Controller의 앞, 오른쪽을 기준으로 움직이고 싶기 때문이다!
    
    const FRotater = Controller->GetControlRotation();
    const FRotater = YawRotation(0,Rotation.Yaw,0);
    
    const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
    const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
    
    AddMovementInput(ForwardDirection, MovementVector.X);
    AddMovementInput(RightDirection, MovementVector.Y);
    
}

void RyanCharacterPlayer::Look(const FInputActionValue& Value){

	FVector2D LookAxisVector = Value.Get<FVector2D>();
    
    // 결국 이 함수가 타고타고해서 바꾸는 값은 ControlRotation이라는 변수의 값
    // 이미 IMC modifier쪽에서 한번 swizzle을 주었기 때문에 X가 Z축 회전, Y가 Pitch 회전이 된다.  
    AddControllerYawInput(LookAxisVector.X);
    AddControllerPitchInput(LookAxisVector.Y);

}

본격적인 회전/이동 알아보기

  • Unreal Engine에서 일반적으로 Character Control을 위해서 설정하는 요소에는 총 5가지가 있다.
    1. Controller : 입력자의 위치(목표 지점)을 지정할 때 사용. ControlRotation 속성
    2. Pawn : Pawn의 transform을 지정.
    3. Camera : 화면 구도를 설정하기 사용. 주로 1인친 시점에서 사용.
    4. Spring Arm : 화면 구도를 설정하기 위해 사용. 주로 3인칭 시점에서 사용.
    5. Character Movement : 캐릭터의 이동과 회전을 조정하는 용도로 사용.

보통 회전을 줄때 현재 회전 상태(Rotation)에서 회전하고 싶은 상태(Desired Rotation)으로 가야한다. 하지만, 여기서 순식간에 꺾어버리면 부자연스러움으로 일정한 각속도로 회전하게 만든다.

Controller의 회전값 ViewPort 상에서 알아보기

이 기능은 정말 대박이다. UPROPERTY로 지정된 값은 우리가 직접 확인할 수 있다고 하는데 지금까지 Pawn의 rotation과 Controller의 rotation의 관계가 계속 헷갈렸던 것을 단번에 해결해 주었다. 보는 방법은,

Viewpoet에서 level 재생버튼을 실행시킨다음에 shift+F1을 통해 빠져나온다. 그 다음에, ~을 눌러서 cmd를 키고 아래와 같은 command를 입력한다.

DisplayAll PlayerController ControlRotation

업로드중..


Pawn, Camera에서 Controller의 회전값 상속받으려면?

Pawn

BP에서 Pawn 회전 detail panel에 들어가면 아래와 같은 속성을 볼 수 있다.

Use Controller Rotation Pitch
Use Controller Rotation Yaw
Use Controller Rotation Roll

기본 setting은 해제가 되어있는데 만약 체크를 한다면 Controller의 위치에 따라 Pawn도 회전을 할 것이다. (Pawn의 얼굴을 볼 수 없겠지..)

Camera Boom

Camera Boom detail panel에서는 아래와 같은 항목을 볼 수 있다.

Use Pawn Control Rotation
여기서는 Pawn과 다르게 보통 체크 되어있는데, 이러면 Controller 방향이 곧 카메라 arm의 방향이 된다.

profile
🏦KAIST EE | 🏦SNU AI(빅데이터 핀테크 전문가 과정) | 📙CryptoHipsters 저자

0개의 댓글