using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Drag : MonoBehaviour, IDragHandler
{
float distance = 10.0f;
public void OnDrag(PointerEventData eventData)
{
Vector3 mousePosition = new Vector3(Input.mousePosition.x,
Input.mousePosition.y, distance);
transform.position = mousePosition;
}
}
1. 드래그를 하기 위해서는 OnMouseDrag() 함수도 있지만, OnDrag() 함수를 사용할 수도 있다.
2. 먼저, OnDrag()를 사용하기 위해서는
using UnityEngine.EventSystems;
을 적어줘서 이벤트 시스템을 사용하겠다는 것을 표기한다.
3. MonoBehaviour뒤에 콤마(,)를 쓴 뒤 IDragHandler를 작성한다. 참고로 IDragHandler 는 인터페이스이다.
4. 3번 IDragHandler를 적으면 에러난다. 즉, 인터페이스에 선언된 메소드를 정의해줘야한다.
형태는 다음과 같다. public void OnDrag(PointerEventData eventData)
5. OnDrag()안에 드래그 했을 때, 일어날 동작들을 적으면 된다.
이 블로그에서는 마우스 드래그하는데로 오브젝트가 딸려오는 것을 구현하려고 한다.
위와 같이 하면 되는데,
마우스는 평면으로 움직이므로 x,y)축만 필요하다.
z축은 위와 같이 10으로 지정해줘도 되고, 그냥 오브젝트의 z축을 그냥 기입해줘도 된다.
그 다음에 transform.position에 mousePosition을 넣음으로써,
드래그할때 mousePosition이 게임오브젝트 위치에 대입되어 마우스 드래그할때 오브젝트가 딸려 움직이게 된다.
이상으로 마우스 드래그를 이용하여 게임오브젝트를 움직이는 방법을 알아보았다.
'게임 개발 관련 > Unity3D' 카테고리의 다른 글
[유니티] 화면에서 임의의 랜덤한 위치에 게임오브젝트 생성하는 방법 (0) | 2018.03.07 |
---|---|
[유니티] UGUI - (1) 캔버스(Canvas)의 개념과 중요성 (0) | 2018.03.07 |
[유니티] 화면 밖으로 게임 오브젝트 못 나가게 하는 코드... (0) | 2018.02.27 |
[유니티] 유니티에서 게임오브젝트를 드래그(Drag)로 이동하는 코드... (1) | 2018.02.26 |
[유니티] 함수의 반복 작업 호출. Invoke & InvokeRepeating & CancelInvoke (0) | 2018.02.24 |