언리얼 엔진 - 카메라 회전
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축 부호를 바꾸도록 한다.
네트워크 정리
카메라 회전과 캐릭터 회전은 엄연히 다른 영역이다. 무엇보다 서버는 카메라 기능이 있다는 것을 모르므로 네트워크를 사용하지 않아도 될 정도이다.
다음 작성 할 레플리케이트 대상이 될 플레이어 회전이다. 카메라와 플레이어의 폰은 다른 영역인 것만 기억해두도록 한다.