유니티 작업중 마우스로 오브젝트와 상호작용할 수 있는 방법을 찾아보았다.
그중 하나로 Ray와 Raycast를 이용한 방법이 눈에 띄었다.
간단히 설명하면, 특정 위치에서 발사되는 광선를 쏘고, 그 광선과 충돌했을 때 메소드를 호출하는 방식이다.
이 방식을 사용하려면 어디로부터(origin), 어느 방향(direction)으로 Ray가 발사되는지 알아야할것이다.
내 경우에는 내가 보는 화면의 물체와 상호작용하길 원하기 때문에, 내가 클릭한 시점의 마우스 포인터 좌표로부터 내가 바라보는 카메라 방향으로 Ray를 발사해야한다.
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Raycast hit;
if (physics.Raycast(ray,out hit)) {...}
첫번째 라인에서 ray 변수에 main 카메라의 방향으로 마우스가 Input된 포지션으로부터 발사된다는 정보를 담았다.
그 다음, Raycast클래스의 hit변수를 생성한다.
physics.Raycast(ray, out hit)는 ray가 물체에 충돌하면 hit에 그 정보를 할당하고 true를 리턴한다.
이를 이용해 if문으로 ray가 특정 물체에 충돌했을 때 if문 안의 내용을 실행할 수 있게 된다.
'Unity > C#' 카테고리의 다른 글
C#에서 구조체, value type (0) | 2021.09.13 |
---|---|
[Unity/C#] Update와 FixedUpdate (0) | 2019.06.17 |
-C#- Awake/Start/Update (0) | 2019.06.03 |
-C#- 대리자(delegate) (0) | 2019.05.28 |
C# - Vector3 (0) | 2019.04.03 |