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 |