using UnityEngine; using UnityEngine.Events; /// /// 挂载在可拖拽的 3D 物体上(如绷带、夹板)。 /// 配合 InteractionSystem 使用。 /// public class DraggableObject : MonoBehaviour { [Header("拖拽状态")] public bool IsDraggable = true; [Header("吸附目标")] public Transform SnapTarget; [Header("事件")] public UnityEvent OnDragStartEvent; public UnityEvent OnDragEndEvent; public UnityEvent OnSnappedEvent; // 吸附成功 private Vector3 _originalPosition; private Quaternion _originalRotation; private void Start() { _originalPosition = transform.position; _originalRotation = transform.rotation; } public void OnDragStart() { OnDragStartEvent?.Invoke(); } public void OnDragEnd() { OnDragEndEvent?.Invoke(); } public void OnSnapped() { Debug.Log($"DraggableObject: {name} 已吸附到目标"); OnSnappedEvent?.Invoke(); IsDraggable = false; // 吸附后不可再拖动 } /// 重置到初始位置 public void ResetPosition() { transform.position = _originalPosition; transform.rotation = _originalRotation; IsDraggable = true; } }