짧아서 간단히 실행할 것이라 생각했는데 몇시간동안 고생했다.
Drag 관련 코드는 이미 내장된 함수가 존재한다.
OnMouseDrag() 함수이다.
이 함수를 호출한 뒤, 드래그(Drag) 했을 때 원하는 코드를 적으면 된다.
일단, 움직이고자 하는 게임오브젝트들에 Drag.cs 파일을 갖다 붙인뒤 Drag.cs파일에 코드를 입력한다.
[Drag.cs]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Drag : MonoBehaviour
{
float distance = 10;
void OnMouseDrag()
{
print("Drag!!");
Vector3 mousePosition = new Vector3(Input.mousePosition.x,
Input.mousePosition.y, distance);
Vector3 objPosition = Camera.main.ScreenToWorldPoint(mousePosition);
transform.position = objPosition;
}
}
불필요한 Start() 함수와 Update() 함수를 삭제하고 OnMouseDrag()함수만 작성했다.
그런데, 아무리 실행을 해봐도 함수가 실행되지 않는다.
그래서 혹시나해서 OnMouse로 시작하는 모든 함수를 작성해보았다.
OnMouseEnter
OnMouseExit
OnMouseUp
OnMouseDown
...
..
.
헉, 모든 마우스 관련 함수가 호출되지 않는다.
여러번의 시도 끝에 혹시나해서 이미지(Sprite)에 Collider를 추가해봤다..
된다. 자~~알 된다. 다만 화면 밖으로 끝없이 드래그(Drag)되지만 움직이는 것은 성공했다.
위와 같이 쓴 다음에 게임을 실행해보면 마우스 드래그로 오브젝트 객체가 이동하는 것을 볼 수 있다.
결론 : 콜라이더(Collider)를 써야 마우스 관련 함수를 사용할 수 있다.
'게임 개발 관련 > Unity3D' 카테고리의 다른 글
[유니티] 마우스 드래그해서 게임오브젝트 끌어 이동하기 (1) | 2018.03.05 |
---|---|
[유니티] 화면 밖으로 게임 오브젝트 못 나가게 하는 코드... (0) | 2018.02.27 |
[유니티] 함수의 반복 작업 호출. Invoke & InvokeRepeating & CancelInvoke (0) | 2018.02.24 |
[유니티] 유니티에서 팝업창 띄우기 (0) | 2018.02.24 |
[유니티] 안드로이드 폰에서 뒤로 가기 버튼 클릭했을 때...체크하기 (0) | 2018.02.24 |