Unity3D/Raycast

Unity 3D Raycast example

Soul-Learner 2014. 2. 26. 22:16

유니티 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미터 거리 내로 가까와졌을 때 큐브가 회전을 시작한다