디지털 양피지/Unity3D2015. 2. 16. 18:53

1. 특정 지점에서 마우스 포인터 까지 선 그리기

OnDrawGizmos() 함수를 통하여 Game View에서는 안보이지만 Scene View에서만 보이는 선을 그릴 수 있다.

다음은 firePoint라는 객체 position에서 마우스가 클릭한 위치까지의 선을 보여준다.


private tempVector3;


void Update () {

if(Input.GetMouseButtonDown(0)){                    // 왼쪽 마우스 버튼이 클릭 되었을 경우

tempVector3 = Input.mousePosition;            // 포인터 저장

}

}

void OnDrawGizmos(){

Gizmos.color = Color.yellow;                        // Gizmos 의 선은 노란색

Gizmos.DrawLine(firePoint.position, tempVector3);    // 마우스 점찍은 곳 까지 선을 그린다.

}


그림과 같이 Game View에서는 안보이지만 Scene View에서 보인다.



위에 코드에서는 OnDrawGizmos 에서 Gizmos 객체를 이용하여 라인을 그렸지만 Debug 객체를 이용하여 그릴 수도 있다. 

코드는 다음과 같다.

void Update () {

if(Input.GetMouseButtonDown(0)){

tempVector3 = Input.mousePosition;

Debug.DrawLine(firePoint.position, tempVector3, Color.yellow);

}

}


하지만, 위와 같이 작업하면 이상하게 마우스 포인터와 위치가 어긋나는 것을 확인할 수 있다. 이는 Input.mousePosition의 좌표가 Screen 좌표를 사용하기  때문이다. 우리가 사용하는 월드 좌표계를 사용하려면 다음과 같이 작업하면된다.


tempVector3 = mainCamra.ScreenToWorldPoint(Input.mousePosition);





2. 카메라에서 마우스 포인터 까지 위치 그리기


카메라에서 마우스가 지정한 위치까지는 다음과 같이 Ray를 사용한다. Ray는 origin과 direction을 변수로 가지는 객체로 특정 위치에서 방향을 나타내는 선을 표시할 수 있는 객체이다.


void Update () {

ray = Camera.main.ScreenPointToRay(Input.mousePosition);

Debug.DrawRay(ray.origin, ray.direction*100, Color.green);

}


위와 같은 코드를 활용하면 특정 객체에서 발사하는 발사체의 방향을 볼 수 있다.




3. Gizmos 활용한 pivot 포인트 보기


이러한 Gizmos 를 활용하면 특정 position에 특정 크기 만큼의 Sphere를 생성할 수 있다.

위의 예제 코드에 OnDrawWirteSphere 를 이용하면 Scene View에서 위치를 파악하기 쉽다.

Gizmos.DrawWireSphere(firePoint.position, 0.75f);





Posted by 빨간 양말