42 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|