언리얼 엔진 - 카메라 회전

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축 부호를 바꾸도록 한다.

개선 여지

  • Pawn 움직임을 설정하지 않아서 바로 확인할 수 없으나, 캐릭터를 움직여 벽을 등지거나 캐릭터와 캐릭터 사이에 카메라를 끼워 놓으면 내 캐릭터가 아닌 내부 폴리곤으로 바라보게 된다.
    • 캐릭터와 벽 사이의 간격을 만들어 카메라 틈새를 넓히는 방법도 있으나, 캐릭터와 캐릭터 부딪치는 것이 있어서 적합하지 않다.
    • 다른 방법으로 카메라와 캐릭터와의 충돌과 벽과 카메라 부딪칠 때 발생하는 충돌 관계를 풀어나간다.

개선 - 충돌 방지

  • Pawn의 Capsule Componen의 CollisionPresets.ObjectType 항목에서 Pawn 선택하고 TraceResp.Camera 설정을 Ignore 또는 Overlap 으로 변경한다.
    • Capsule Componen만 한 경우 Pawn클래스 액터에 대해서만 충돌을 무시해 카메라를 클로즈업을 하지 않는다.
    • Mesh 컴포넌트는 설정이 안되있으므로 무시하지 않고 다시 카메라를 클로즈업을 시키는 상황이 발생하므로 이 컴포넌트 설정도 Ignore 하거나 Overlap 한다.
💡
참고로 Pawn 크기보다 Mesh 컴포넌트가 외형으로 넓게 포진 되어 있으므로 아티스트들은 이를 고려해 하나는 끄고, 하나는 키는 방식으로 원하는 액션으로 이끌기도 한다.

네트워크 정리

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

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