1. 레이캐스트(Raycast)
- 물리적인 픽킹
- 유저가 실제 게임화면을 보았을 때, 전체 오브젝트 중 특정 오브젝트를 선을 그어서 선에 닿은 오브젝트를 찾아내는 것.
- 선(ray)을 그어 찾는 것(cast).
- Physics(물리)에서 담당.
- UI, 캐릭터 이동등, 모든 상황에 맞춰 사용할 수 있다.
특정 오브젝트를 찾기 위한 요소
- 카메라 (Camera)
- 레이 광선 (Ray)
- 레이 캐스팅된 결과(Ray hit)
특정 레이어에만 레이캐스트를 하고자 하는 것은 레이어 마스킹
레이캐스팅(RayCasting)
- 카메라를 통한 레이의 가장 일반적인 사용방법
- Scene에 Raycast를 실행하는 것
- 레이캐스트는 가상의 "레이저 빔"을 원점에서부터 레이에 따라 씬 안의 콜라이더에 충돌할 때까지 보낸다.
- 특정 오브젝트를 선택하기 위해서(Raycast)는 반드시 콜라이더가 존재해야 한다.
- 그 다음 오브젝트와 RaycastHit 오브젝트의 충돌된 점에 대한 정보를 반환한다.
- 이것은 스크린상 나타난 이미지를 기반하여 오브젝트가 어디에 위치하는지 찾는 유용한 방법이다.
2. 예제
public class ExampleScript : MonoBehaviour {
public Camera camera;
void Start() { // 한번만 호출
RaycastHit hit;
Ray ray = camera.ScreenPointToRay(Input.mousePosition); // 마우스 위치
if(Physics.Raycast(ray, out hit)) { // 콜라이더가 있을때 밑 부분 함수 실행
Transform objectHit = hit.transform;
// Do something with the object that was hit by the raycast.
}
}
}
public class ExampleScript : MonoBehaviour {
public bool zooming;
public float zoomSpeed;
public Camera camera;
voic Update() {
if(zooming) {
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
float zoomDistance = zoomSpeed * Input.GetAxis("Vertical") * Time.deltaTime; // 줌 속도 * 상하(마우스, 키보드)의 이동 * 프레임 단위 고정
camera.transform.Translate(ray.direction * zoomDistance, Space.World);
}
}
}
- 3 : 특정 레이어(오브젝트)만 건들이는 방법 = 레이어 마스킹

- 3.1 : 실제로 사용되는 코드 ==> 3번 수정된 코드
