Unity 3D Raycast example
유니티 3D 에서 레이캐스트(Raycast) 를 이용하여 앞쪽에 있는 오브젝트를 탐색하는 예
3D 환경에서 특정 위치로부터 특정 방향에 어떤 물체(게임 오브젝트)가 있는지 탐색할 필요가 있다. 예를 들어 이용자가 마우스나 손가략을 이용하여 모니터의 특정 지점을 클릭했을 때 클릭된 지점으로부터 화면 안쪽 방향에 어떤 오브젝트가 있다면 그 오브젝트를 이용자가 가리키고 있는 것이기 때문에 개발자가 그 오브젝트를 참조해야 한다. 이럴 경우에 Raycast 가 유용하게 사용된다.
First Person Controller 가 큐브가 있는 방향으로 이동할 때 7미터 이내에 큐브가 존재할 경우에 큐브가 회전하도록 설정해보자
#pragma strict
var hit:RaycastHit; //레이캐스트 탐색결과 탐색된 오브젝트 정보
function Start () {
}
function Update () {
// 어떤 오브젝트가 7미터 앞쪽에 존재하면 그 오브젝트의 이름을 구한다
var found:boolean = Physics.Raycast(transform.position, transform.forward, hit, 7);
if(!found) return;
var name = hit.transform.name;
if(name!=null && name=='Cube') {
var targetObj = GameObject.Find(name);
targetObj.transform.Rotate(0, Time.deltaTime*50, 0);
}
}
위에서 작성된 코드를 아래 그림의 절차를 따라 First Person Controller 에 포함시키고 Play 버튼을 누르고 Game 뷰에서 마우스로 큐브방향을 가리키고 w 키를 눌러 이동하면 7미터 거리 내로 가까와졌을 때 큐브가 회전을 시작한다