짧아서 간단히 작성할 것이라 생각했는데 약 2시간동안 고생했다.


드래그 코드는 이미 내장된 함수가 존재한다.


OnMouseDrag()


이 함수를 호출하여 원하는 코드를 적으면 된다.


일단, 움직이고자 하는 게임오브젝트들에 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를 추가해봤더니 이런 !! 된다.


마우스 관련 함수를 사용하기 위해서는 반드시 


콜라이더를 써야만 한다는 것을 알게 되었다.


위와 같이 쓴 다음에 실행해보면 게임오브젝트가 마우스로 이동하는 것을 볼 수 있다.

 

Posted by sungho88
,