void Update()
    {
        // 마우스 왼쪽버튼 누르면
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            if(Physics.Raycast(ray, out hitInfo, Mathf.Infinity))
            {
                Debug.Log($"충돌한 오브젝트={hitInfo.transform.gameObject}, 충돌위치={hitInfo.point}");
            }
        }
    }


! 항상 카메라 중심으로 오브젝트가 보여진다는 것을 생각하자 !  월드좌표가 아닌 카메라 중심으로 좌표계 변환이 일어난다.

Camera.main = 메인 카메라

ScreenPointToRay = 카메라의 한 지점으로부터 모니터 안쪽으로 ray를 쏘는것

Input.mousePosition = 화면에서의 마우스 좌표

 

1. 모니터 안쪽으로 향하는 반직선을 생성 후,

2. 광선이 충돌한 정보를 담아오기 위한 구조체를 선언하고,

3. 만약 충돌이 있다면 광선과 충돌한 정보를 가공해서 쓴다.

     // 충돌한 게임오브젝트의 트랜스폼
     hitInfo.collider.transform;
     // 충돌한 게임오브젝트의 현재 위치
     hitInfo.collider.transform.position;
     // 충돌한 게임오브젝트
     hitInfo.collider.gameObject;

*물리를 많이 사용하면 속도에 영향을 미침. (Raycast를 남용하지 말자!)

'Unity' 카테고리의 다른 글

캐릭터를 따라다니는 3인칭 카메라 구현  (0) 2021.05.24
마우스 입력한 곳으로 움직이기  (0) 2021.05.21
상속  (0) 2021.04.16
스택메모리 힙메모리  (0) 2021.04.16
LocalPosition VS WorldPosition  (0) 2021.04.16

+ Recent posts