42 lines
1.1 KiB
C#

using UnityEngine;
public class MouseDragDistance : MonoBehaviour
{
private Vector3 startPosition;
private Vector3 endPosition;
private bool isDragging = false;
public float distance = 100;
// 当鼠标在物体上按下时调用
private void OnMouseDown()
{
isDragging = true;
// 记录鼠标按下时的屏幕位置
startPosition = Input.mousePosition;
}
// 当鼠标在物体上拖动时持续调用
private void OnMouseDrag()
{
if (isDragging)
{
// 实时更新当前鼠标位置
endPosition = Input.mousePosition;
float dragDistance = Vector3.Distance(startPosition, endPosition);
if (TryGetComponent(out PC_DragEvent dragEvent))
{
if(dragDistance > distance)
{
dragEvent.stay?.Invoke(gameObject);
}
}
//Debug.Log("鼠标在物体上的拖拽距离为: " + dragDistance + " 像素");
}
}
// 当鼠标在物体上释放时调用
private void OnMouseUp()
{
isDragging = false;
}
}