1.先使所有图片达到下面图层结构
bar代表遥感的外圈
InBar代表摇杆的摇杆
2.添加以下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class DragController : MonoBehaviour,
IPointerDownHandler, IPointerUpHandler,
IDragHandler
{
public GameObject DragBar;
//根据点击位置实现移动
public GameObject Bar;
//遥感可以移动的范围半径
public float R;
private void Start()
{
DragBar.SetActive(false);
}
public void OnPointerDown(PointerEventData eventData)
{
DragBar.SetActive(true);
Vector2 localPos;
//拖拽的实现
RectTransformUtility.ScreenPointToLocalPointInRectangle(
transform as RectTransform, //获取遥感可以移动的Transform
eventData.position, // 屏幕坐标系下触摸的点
eventData.pressEventCamera,//触发事件的相机
out localPos//获得本地坐标系的点
);
//修改位置
DragBar.transform.localPosition = localPos;
}
public void OnPointerUp(PointerEventData eventData)
{
DragBar.SetActive(false);
//将内杆的位置归为0
Bar.transform.localPosition = Vector3.zero;
}
public void OnDrag(PointerEventData eventData)
{
Vector2 localPos;
//拖拽的实现
RectTransformUtility.ScreenPointToLocalPointInRectangle(
DragBar.transform as RectTransform, //获取遥感可以移动的Transform
eventData.position, // 屏幕坐标系下触摸的点
eventData.pressEventCamera,//触发事件的相机
out localPos//获得本地坐标系的点
);
//如果超过了半径的位置就要让遥感不出去
//magnitude获取该向量的长度
if (localPos.magnitude > 100)
{
//标准化向量
localPos = localPos.normalized * R;
}
//修改位置
Bar.transform.localPosition = localPos;
}
}
3.将脚本放在遥感的可动范围的image