41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.EventSystems;
|
|||
|
|
|
|||
|
|
public class UIMove : MonoBehaviour,IPointerClickHandler
|
|||
|
|
{
|
|||
|
|
public Transform targetObject; // 目标对象
|
|||
|
|
public Vector3 relativePosition; // 相对位置
|
|||
|
|
private bool isMoving = false;
|
|||
|
|
public static bool isStaticMove = false;
|
|||
|
|
|
|||
|
|
void Update()
|
|||
|
|
{
|
|||
|
|
if (isMoving)
|
|||
|
|
{
|
|||
|
|
// 使用平滑过渡(Lerp)将目标对象移动到相对位置
|
|||
|
|
if (targetObject != null)
|
|||
|
|
{
|
|||
|
|
targetObject.localPosition = Vector3.Lerp(targetObject.localPosition, relativePosition, Time.deltaTime*2f);
|
|||
|
|
if (Vector3.Distance(targetObject.localPosition, relativePosition) < 1f)
|
|||
|
|
{
|
|||
|
|
isMoving = false;
|
|||
|
|
isStaticMove = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void OnPointerClick(PointerEventData eventData)
|
|||
|
|
{
|
|||
|
|
if (isStaticMove)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
isMoving = true;
|
|||
|
|
isStaticMove = true;
|
|||
|
|
}
|
|||
|
|
}
|