Unity

[Unity][방법] Object충돌(Collision)_3 Ray사용하여 마우스 클릭좌표 얻기

usingsystem 2022. 10. 5. 15:31
728x90
Local -> Word > ViewPort -> Screen(화면)
Input.mousePosition; //스크린 좌표 픽셀좌표
Camera.main.ScreenToViewportPoint(Input.mousePosition); // 특정 픽셀의 비율좌표

Ray 사용권장

  #region Ray 사용한방법
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100.0f))
            {
                Debug.Log($"Raycast Camera @ {hit.collider.gameObject.name}");
            }
        }
        #endregion

ScreenToWorldPoint

 #region ScreenToWorldPoint 사용한 방법 
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mouseWordPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane));//1. 마우스포지션 월드 좌표를 구한다. nearClipPlane은 카메라 깊이를 의미한다.
            Vector3 direction = mouseWordPos - Camera.main.transform.position;//2. 마우스 포지션과 카메라 포지션간의 거리 값을 가져온다..
            direction = direction.normalized;//3.정규화를 진행한다.

            Debug.DrawRay(Camera.main.transform.position, direction * 100.0f, Color.red, 1.0f);
            RaycastHit hit;
            if (Physics.Raycast(Camera.main.transform.position, direction, out hit, 100.0f))
            {
                Debug.Log($"Raycast Camera @ {hit.collider.gameObject.name}");
            }
        }
        #endregion

 

728x90