, ,

전에 4.x버전용 드래그를 구현한 적이 있습니다.

(참고 : [Unity 4] 오브젝트 드래그 하기 )

그런데 5.x용 자료를 보다 보니 드래그 관련 이벤트가 있군요.

언제 생긴 건지 모르겠지만 이것을 이용하면 오브젝트 드래그를 쉽게 구현할 수 있습니다.

 

 

1. 드래그 이벤트
'MonoBehaviour.OnMouseDrag()'이라는 이벤트가 생겼습니다.

 

(참고 : unity documentation - MonoBehaviour.OnMouseDrag() )

오브젝트에 'MonoBehaviour'가 붙어 있다면 그냥 이벤트만 오버라이드해서 사용하면 됩니다.

이 이벤트를 오버라이드한 스크립트를 가지고 있는 오즈젝트는 드래그가 시작되면 이벤트가 넘어옵니다.

 

프로젝트를 생성하고 '3D Text'객체와 'Cube'객체를 화면에 올려놔 봅시다.

'3D Text'의 이름을 'DisplayText'으로 바꿉니다.

스크립트를 생성하고 다음 코드를 넣습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class CDrag : MonoBehaviour
{
    /// <summary>
    /// 3d 텍스트 오브젝트
    /// </summary>
    TextMesh m_textMeshDisplayText;
 
    // Use this for initialization
    void Start ()
    {
        this.m_textMeshDisplayText 
            = (GameObject.Find("DisplayText"as GameObject).GetComponent<TextMesh>();
    }
 
    /// <summary>
    /// 마우스 업 이벤트
    /// </summary>
    void OnMouseUp()
    {
        this.m_textMeshDisplayText.text = "드래그중이 아님";
    }
 
    /// <summary>
    /// 드래그 이벤트
    /// </summary>
    void OnMouseDrag()
    {
        this.m_textMeshDisplayText.text = "드래그중이다!";
    }
}
cs

 

 

위 코드를 큐브(Cube)에 넣고 실행해 봅시다.

 

 

 

큐브를 클릭해서 드래그하려고 하면 메시지가 변경되는 것을 알 수 있습니다.

 

2. 오브젝트를 드래그해보자.

스크립트가 옮기려는 객체에 들어 있으므로 자신의 좌표만 수정해주면 됩니다.

이건 이전 코드와 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
/// <summary>
/// 드래그 이벤트
/// </summary>
void OnMouseDrag()
{
    this.m_textMeshDisplayText.text = "드래그중이다!";
 
    //마우스 좌표를 받아온다.
    Vector3 mousePosition 
        = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10);
    //마우스 좌표를 스크린 투 월드로 바꾸고 이 객체의 위치로 설정해 준다.
    this.transform.position = Camera.main.ScreenToWorldPoint(mousePosition);
}
cs

 

 

코드가 참 쉽죠?

자기 자신에서 이벤트가 발생하기 때문에 클릭한 오브젝트를 찾을 필요가 없어서 코드가 간결합니다.

 

코드를 테스트해봅시다.

 

 

 

마무리

 

아래 파일을 테스트용 프로젝트입니다.

DragTest.zip

 

 

 

드래그 이벤트 하나만으로 마우스 상태 확인, 클릭 된 오브젝트 찾기 같은 작업이 한 번에 처리 되었습니다!

이런 이벤트는 빨리 좀 만들어주지 ㅎㅎㅎㅎ

설마 이전 버전에도 있었는데 모르고 있던 건가;;;;;

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바