首先搭建场景
俩个UI Image 为父子级关系 如图所示
此代码挂载在中间需要移动的Image
接下来是代码部分
命名空间如下所示
using UnityEngine;
using UnityEngine.EventSystems;
关键的代码部分
// 开始拖拽 结束拖拽 拖拽中
public class Rocker : MonoBehaviour,IDragHandler,IEndDragHandler,IBeginDragHandler
{
//移动的坐标的坐标和开始的位置
public Vector2 vector, startPos;
//判断是否在移动
public bool moveBool;
//移动范围
int lenl = 35;
//需要移动的物体
public GameObject player;
//开始拖拽
public void OnBeginDrag(PointerEventData eventData)
{
moveBool = true;
startPos=transform.position;
}
//拖拽中
public void OnDrag(PointerEventData eventData)
{
vector = eventData.position - startPos;
transform.position = Vector2.ClampMagnitude(vector, lenl) + startPos;
}
//结束拖拽
public void OnEndDrag(PointerEventData eventData)
{
moveBool = false;
transform.localPosition = Vector3.zero;
}
void Update()
{
if(moveBool)
{
player.transform.LookAt(new Vector3(vector.x, 0, vector.y) + player.transform.position);
player.transform.Translate(new Vector3(0, 0, Time.deltaTime * 3f));
}
}
}