Record/TIL

[Unity] 마우스 포인터 시점에 따라 화면 움직이게 하기

석영 2024. 7. 16. 22:45
반응형
transform.eulerAngles

Unity에서 게임 오브젝트의 회전을 표현하는 속성 중 하나로, 오브젝트의 회전을 오일러 각도로 나타낸다. 오일러 각도는 회전하는 각도를 x, y, z 세 축을 기준으로 표현하는 방식이다.

 

 

특징

오일러 각도: transform.eulerAngles는 Vector3로 표현되며, x, y, z 값은 각각 오브젝트의 피치(pitch), 요(yaw), 롤(roll)을 의미한다.

  • x: 피치(pitch), 오브젝트가 x축을 기준으로 회전한 각도 (위아래로 회전)
  • y: 요(yaw), 오브젝트가 y축을 기준으로 회전한 각도 (좌우로 회전)
  • z: 롤(roll), 오브젝트가 z축을 기준으로 회전한 각도 (좌우로 기울임)

 

 

코드

어제 썼던 코드중에 시점 부분만 따온거... 마우스 움직임으로 카메라 회전시키기

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerMovement : MonoBehaviour
{
    [Header("Look")]
    [SerializeField] private Transform playerCamera;
    private float minXLook = -50.0f;
    private float maxXLook = 70.0f;
    private float camCurXRot;
    private float lookSensitivity = 0.2f;
    private Vector2 mouseDelta;


    private void LateUpdate()
    {
        CameraLook();
    }

    public void OnLookInput(InputAction.CallbackContext context)
    {
        // 마우스 이동량
        mouseDelta = context.ReadValue<Vector2>();
    }

    void CameraLook()
    {
        // 상하 회전
        camCurXRot += mouseDelta.y * lookSensitivity;
        camCurXRot = Mathf.Clamp(camCurXRot, minXLook, maxXLook);
        playerCamera.localEulerAngles = new Vector3(-camCurXRot, 0, 0);

        // 좌우 회전
        transform.eulerAngles += new Vector3(0, mouseDelta.x * lookSensitivity, 0);
    }
}

 

 

참고문서

>> 유니티 공식문서

 

Unity - Scripting API: Transform.eulerAngles

Transform.eulerAngles represents rotation in world space. When viewing the rotation of a GameObject in the Inspector, you may see different angle values from those stored in this property. This is because the Inspector displays local rotation, for more inf

docs.unity3d.com

 

반응형