다르게 얘기해서 PlayerController
과 Pawn
의 회전을 분리하는 개념이라고 이해했다.
지금까지 작성한 코드는 세로 회전의 경우 캐릭터를 고정시키고 카메라만 움직이지만,
가로로 움직일때에는 캐릭터도 따라서 움직이고 있다.
이를 해결하기 위해서 우선 Controller
의 z축(yaw) 기준 회전값을 따라가는 옵션을 꺼주고,
Rotation 세팅에서 아래 Orient Rotation to Movement
값을 켜줘야 한다.
이동하고자 하는 방향으로 오브젝트를 회전시키는 옵션인데, 이해하는데 한참 걸렸다.
정리하자면, 1. 카메라와 캐릭터의 회전을 분리하지만 2. 캐릭터는 카메라가 보는 방향으로 이동하도록 만들 것이다.
1번은 위의 체크로 해결했고, 2번이 무슨 이야기냐면
위 사진처럼 캐릭터가 파란 화살표 방향을 바라보고 있더라도
앞으로 가는 방향키를 누르면 빨간 화살표 방향으로 이동해야 한다.
따라서, 위의 Orient Rotation to Movement
옵션을 켜고, 빨간 방향을 이동 방향으로 설정해주면
알아서 캐릭터가 회전 후 빨간 화살표 방향으로 움직일 것이다.
이건 간단하게 해결할 수 있는데, PlayerController
에서 Forward
와 Right
벡터의 주체를 바꿔주면 된다.
기존에는 Get Actor Forward/Right Vector
의 주체가 Pawn
이었는데,
카메라와 분리했고, 이제 카메라(Controller
)가 보는 방향으로 이동해야 하므로
그냥 self
로 변경해주면 된다.
아래는 챗GPT한테 물어봤던 내용.
옵션이 꺼져있으면 이렇게 움직인다.