서론
요새 모바일 게임에 관심이 좀 생겼는데, 그러다가 모바일 게임들은 "입력"을 받는 방식이 상당히 한정되어 있다는 사실을 깨달았다. 그래서 터치와 드래그를 구별하는 코드를 한 번 짜봤다.
코드
using UnityEngine;
public class Node : MonoBehaviour
{
private SpriteRenderer sr;
[SerializeField] private bool isSelected;
[SerializeField] private Vector2 startPos;
private void Awake()
{
sr = GetComponent<SpriteRenderer>();
isSelected = false;
}
private void OnMouseDown()
{
startPos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
private void OnMouseUp()
{
if ((Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition) == startPos)
{
isSelected = !isSelected;
if (isSelected)
{
sr.color = new Color(1, 1, 1, 1f);
}
else
{
sr.color = new Color(0, 0, 0, 0.25f);
}
}
}
private void OnMouseDrag()
{
if (isSelected)
{
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = new Vector3(mousePosition.x, mousePosition.y, 0);
}
else
{
return;
}
}
}