유니티/유니티 C#

[유니티/C#] 마우스 위치로 바라보기

진서박 2023. 7. 12. 17:52
반응형

탑다운 게임에서 마우스로 조작을 할 때 마우스 커서 위치를 바라보는 경우가 있다.

 

 

   private void Rotate()
    {
        // 마우스 커서의 위치를 바라봄

        // ScreenPointToRay : 화면상의 점을 카메라 뷰포트 상의 원점으로 하는 레이 발사
        Ray _cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);


        // Vector3.up과 Vector3.zero (세계 좌표계의 원점)을 인자로 받아 Plane 객체 생성
        // => 수평 평면으로 y=0을인 Plane 객체를 생성
        // y=0인 평면 == 씬에서 오브젝트들이 배치되어 있는 평면
        Plane _plane = new Plane(Vector3.up, Vector3.zero);


        // 레이와 평면이 교차한 지점까지의 거리를 저장하는 변수
        float _rayLength;

        // 레이가 평면과 교차한 경우에만 로직 실행
        // 레이와 평면의 교차 여부를 판단하고, 교차한 경우 true 반환
        // out 키워드를 사용하여 rayLength 변수에 레이의 시작점으로부터 평면과의 교차 지점까지의 거리를 저장
        if (_plane.Raycast(_cameraRay, out _rayLength))
        {
            // 레이의 시작점으로부터 주어진 거리만큼 떨어진 지점을 반환
            Vector3 _lookDir = _cameraRay.GetPoint(_rayLength);

            // 객체를 지정된 위치로 회전
            transform.LookAt(new Vector3(_lookDir.x, transform.position.y, _lookDir.z));
        }
    }

 

 

작동

반응형