짧아서 간단히 실행할 것이라 생각했는데 몇시간동안 고생했다.


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)를 써야 마우스 관련 함수를 사용할 수 있다.


 

Posted by sungho88
,