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);
'디지털 양피지 > Unity3D' 카테고리의 다른 글
Unity3D - NGUI: Event Trigger, Key Binding, Key Navigation (0) | 2015.02.25 |
---|---|
Unity3D - Singleton 객체 만들기 (0) | 2015.02.17 |
Unity3D - Sorting Layer 사용하기 (0) | 2015.02.16 |
Unity3D - Animation & Mecanim (0) | 2015.02.13 |
Unity3D - Sprite(Sprite Editor) (0) | 2015.02.13 |