유니티 작업중 마우스로 오브젝트와 상호작용할 수 있는 방법을 찾아보았다.

그중 하나로 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

+ Recent posts