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
'Unity' 카테고리의 다른 글
[Unity][팁] transform.LookAt을 사용하여 오브젝트가 나를 바라보도록 (0) | 2022.10.05 |
---|---|
[Unity][방법] Object충돌(Collision)_4 RayerMask 사용하기 (0) | 2022.10.05 |
[Unity][방법] Object충돌(Collision)_2 RaycastHit 레이저사용하기 (0) | 2022.10.05 |
[Unity][방법] Object충돌_1(Collision) OnCollisionEnter, OnTriggerEnter, OverlapSphere(설정반경오브젝트 확인) 방법 (0) | 2022.10.05 |
[Unity][팁] 폴더관리 (0) | 2022.10.04 |