[ Unity ]
InputSystem으로 받은 마우스 델타 값(얼마나 움직였는지)을 활용하여 카메라를 회전할 것이다.
현재 카메라는 z축을 향하고 있다.
아래 사진에서는 화면 너머 나를 향한 방향이 z축이다.
먼저 마우스를 움직이면 mouseDelta 변수로 벡터 값이 들어온다.
public void OnLook(InputAction.CallbackContext context)
{
mouseDelta = context.ReadValue<Vector2>();
}
mouseDelta의 x가 변한 것은 마우스를 좌우로 움직였다는 뜻이고, 카메라도 좌우로 회전시켜야 한다.
카메라를 좌우 회전시키기 위해서는 y축을 기준으로 카메라를 회전시켜야 한다.
따라서 mouseDelt.x를 transform의 y에 적용시킨다.
mouseDelta의 y가 변한 것은 마우스를 상하로 움직였다는 뜻이고, 카메라도 상하로 회전시켜야 한다.
카메라를 상하 회전시키기 위해서는 x축을 기준으로 카메라를 회전시켜야 한다.
따라서 mouseDelt.y를 transform의 x에 적용시킨다.
void CameraLook()
{
camCurXRot += mouseDelta.y * lookSensitivity;
camCurXRot = Mathf.Clamp(camCurXRot, minXLook, maxXLook);
cameraContainer.localEulerAngles = new Vector3(-camCurXRot, 0, 0);
transform.eulerAngles += new Vector3(0, mouseDelta.x * lookSensitivity, 0);
}
우리는 player 안에 camera를 넣어놓았다.
그래서 player의 transform을 변경하면 카메라도 변경된다.
좌우 회전의 경우 플레이어도 회전시켰는데, 상하 회전의 경우 플레이어는 그대로고 시점만 회전시키고 싶었다.
그래서 player 안에 cameraContainer를 넣고, 여기에 camera를 넣었다.
상하 회전의 경우 cameraContainer를 건들여서 시점만 변경시킬 수 있었다.
'TIL' 카테고리의 다른 글
[ 24.06.12 ] 내일배움캠프 TIL - AudioManager (0) | 2024.06.12 |
---|---|
[ 24.06.10 ] 내일배움캠프 38일차 TIL - Prefab 로딩 (0) | 2024.06.10 |
[ 24.05.24 ] 내일배움캠프 28일차 TIL - SkyBox, RayCast (0) | 2024.05.24 |
[ 24.05.23 ] 내일배움캠프 27일차 TIL - SOLID 원칙 (0) | 2024.05.23 |
[ 24.05.22 ] 내일배움캠프 26일차 TIL - event system (0) | 2024.05.22 |