언리얼 엔진 - 카메라 회전

BP_PlayerController 블루프린트에서 마우스를 회전하면 좌표가 화면에 표시되는 것까지 확인하였다.

다음으로 카메라 회전을 상하좌우로 돌릴 수 있도록 작업한다.

BP_PlayerController

  • Add Yaw Input
    • 좌우 카메라 이동
  • Add Up/Down
    • 상하 카메라 이동

Yaw Input 과 Pitch Input 노드를 사용하고 있다. Self로 누구를 가리키냐에 따라 동작이 다를 수 있는데. PlayerController는 카메라를 회전하라는 ​의미는 아니다.

  • BP_PlayerController 아래의 Transform.Rotation 값을 확인해보자.
  • 마우스 움직임 따라서 Rotation 이 바뀌고 있다.
    • 즉, Yaw, Pitch 노드가 PlayerController 에게 쥐어지면 마우스 움직이 따라서 Rotation 값이 변경된다.
    • 입력이 IA_Look으로 인한 마우스의 X,Y이며 출력이 Rotation 변화이다.
  • 또 한 마우스 움직일 경우 카메라가 움직이는 것이 아니라 Character 의 Arrow 방향으로만 쳐다보는 것이므로 카메라 회전이 아닌 캐릭터가 회전하고 있다.
  • 부자연스러운 카메라 회전이다.
  • 보통은 카메라만 회전하여 염탕하다가 단축키를 누를 경우 캐릭터가 달려가면서 자연스럽게 카메라가 바라보도록 하는 것이 좋다.
  • 상하는 Spring Arm 셀카봉으로 인해 막혀있다.

BP_Player

해당 블루프린트에서 카메라 관련 컴포넌트는 다음과 같다.

  • Self(BP_Player)
  • CameraBoom > FollowCamera
  • Camera Movement

이 세개의 컴포넌트 가지고 원하는 형태의 카메라를 다룰 생각이다.

Self (BP_Player)

BP_Player 상속한 캐릭터, Pawn 클래스의 멤버변수를 확인할 것이다.
우측 Detail 에서 확인한다.

Self Detail > Pawn 기능 보기

  • UseControllerRotationPitch
    • flase
  • UseControllerRotationYaw
    • true
  • UseControllerRotationRoll
    • false
  • ...

여러 가지 옵션 중 Yaw 이 켜져있는데 끄도록 한다.

끄고 다시 실행할 경우 PlayerController 인스턴스의 Rotation 값만 변화하고 캐릭터는 움직이지 않는 것을 볼 수 있다.

FollowCamera 컴포넌트 Detail

  • CameraOption.UsePawnControlRotation
    • false

이 옵션은 꺼져있다. 다시 활성화하면 게임에서 화면을 돌릴 수 있다

  • 카메라만 이동되고 캐릭터가 움직이지 않도록 했다.
  • 위 아래로 마우스로 카메라 회전한다.

새로운 문제가 생겼다. 마우스를 위로 향하면 카메라가 아래를 바라본다.
본인은 반대의 상황을 기대했으므로 수정하도록 한다.

IMC_Defalt 수정

인풋 매핑 IMC_Default 블루프린트에서 Modifiers 추가해 Negate 사용하여 Y축 부호를 바꾸도록 한다.


네트워크 정리

카메라 회전과 캐릭터 회전은 엄연히 다른 영역이다. 무엇보다 서버는 카메라 기능이 있다는 것을 모르므로 네트워크를 사용하지 않아도 될 정도이다.

다음 작성 할 레플리케이트 대상이 될 플레이어 회전이다. 카메라와 플레이어의 폰은 다른 영역인 것만 기억해두도록 한다.