CineMachine의 VirtualCamera를 사용해 1인칭 시점과 3인칭 시점을 구현해 보자.
1인칭 시점 구현은 카메라를 Player 오브젝트의 머리에 해당되는 좌표에 심어버리면 그만이다.
그리고 Player 오브젝트에 다음과 같은 스크립트 컴포넌트를 추가해 준다.
public class FPSCameraController : MonoBehaviour
{
[SerializeField] Transform cameraTransform;
[SerializeField] float mouseSensitivity;
private Vector2 inputDir; private float yRotation;
void OnLook(InputValue inputValue)
{
inputDir = inputValue.Get<Vector2>();
}
private void OnEnable()
{
Cursor.lockState = CursorLockMode.Locked;
}
private void OnDisable()
{
Cursor.lockState = CursorLockMode.None;
}
private void LateUpdate()
{
yRotation -= mouseSensitivity * inputDir.y * Time.deltaTime;
yRotation = Mathf.Clamp(yRotation, -80.0f, 80.0f); // 회전 각도 제한
transform.Rotate(Vector3.up*mouseSensitivity * inputDir.x* Time.deltaTime);
cameraTransform.localRotation =Quaternion.Euler(yRotation,0,0);
}
}
CusorLockMode
는 다음과 같은 기능이 있다.
Locked : 마우스의 커서를 윈도우 정중앙에 고정시킨 후 보이지 않게 함.
ex )
Cursor.lockState = CursorLockMode.Locked;
Confined : 마우스의 커서가 게임 윈도우 밖으로 벗어나지 않게 함.
ex)
Cursor.lockState = CursorLockMode.Confined;
None : Locked 또는 Confined 되었던 커서를 원래대로 돌려줌.
ex)
Cursor.lockState = CursorLockMode.None;