首先要引入命名空间
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
实现两个接口
IDragHandler,IEndDragHandler
代码
public class LLDragJoySticl : MonoBehaviour,IDragHandler,IEndDragHandler{
//虚拟遥杆的方向上的坐标
private Vector3 direction;
//最大拖动距离
public float maxDistance;
public void OnDrag(PointerEventData eventData)
{
//获取到鼠标的坐标信息并进行赋值
transform.position = Input.mousePosition;
//移动距离大于设定的最大距离
if (Vector3.Distance(Vector3.zero, transform.localPosition) > maxDistance)
{
//将遥杆的最大距离赋值给遥杆方向上的坐标
direction = transform.localPosition;//- Vector3.zero;
//设定边界//规范化*自定义最大距离从而设定边界
//相对于父物体坐标系
transform.localPosition = direction.normalized * maxDistance;
}
}
public void OnEndDrag(PointerEventData eventData)
{
//将虚拟遥杆归位
transform.localPosition = Vector3.zero;
}
}
脚本需挂载到Joystick中,Canvas的子对象
注:此处用到的是UGUI
有什么不对的地方欢迎指出,共同学习;