본문 바로가기

Unity3D/Vector3.Distance()

Unity 3D Vector3.Distance() example

유니티 3D에서 Vector3.Distance() 사용하기


유니티 3D 게임을 만들 때 2개의 게임 오브젝트 간의 거리가 일정한 범위 내로 좁혀지면 어떤 동작이 수행되도록 작성해야 한다면 Vector3.Distance() 를 사용할 수 있다.

아래의 예제는 큐브(Cube)와 구(Sphere)가 거리를 두고 있을 때 구가 큐브에게로 점차 가까이 이동하여 거리가 7 에 이르면 정지해 있던 큐브가 회전을 시작하고 거리가 7보다 멀어지면 회전을 멈추는 동작을 구현해 본 것이다.


#pragma strict


var targetObj:GameObject; // Inspector 뷰에서 큐브를 드래그하여 할당할 변수


function Start () {

targetObj = GameObject.Find("Cube"); // Hierarchy 뷰에서 'Cube' 라는 이름의 오브젝트를 찾는다

}


function Update () {

var distance = Vector3.Distance(this.transform.position, targetObj.transform.position);

if(distance<=7) {

targetObj.transform.Rotate(0, Time.deltaTime*50, 0);

}

}


위의 코드를 작성한 후에 아래 그림의 번호 순에 따라서 설정을 하고 실행 버튼을 누르고 구의 Z축 기즈모를 드래그하여 큐브에 가까이 이동하면  큐브가 회전하는 것을 확인할 수있다




위의 방법을 First Person Controller 에 적용하면 1인칭 카메라가 어떤 오브젝트에 가까이 다가서면 반대편 오브젝트는 어떤 동작을 수행하도록 응용할 수 있다.