之前实习的时候,用到了虚拟摇杆,但是需要导入别人的包,有时甚至还有有一些错误,所以自己决定用自带的ugui制作一个虚拟摇杆,不仅方便,还减少了包的大小;
如图所示,制作一个背景的图片image,在建一个子物体image,放置好自己需要的摇杆图片(我用unity自带的图片),接下来就要写代码了,代码如下:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class test : MonoBehaviour,IDragHandler,IEndDragHandler,IBeginDragHandler {
Vector3 startPos;//开始位置
Vector3 dir;//方向
float radius = 80;//需要移动的半径,这个要根据自己需要移动的距离改变哦,我的是80
public void OnDrag(PointerEventData eventData)
{
dir = (Input.mousePosition - startPos).normalized;
transform.position = Input.mousePosition;
float dis = Vector3.Distance(transform.position,startPos);
if (dis > radius)
transform.position = startPos + dir * radius;
}
public void OnEndDrag(PointerEventData eventData)
{
transform.localPosition = Vector3.zero;
}
public void OnBeginDrag(PointerEventData eventData)
{
startPos = transform.position;
}
}
代码非常简单,就不多解释了,将这个代码放到子物体身上,点击运行你就会发现,是不是和以前用的一样呢。是不是非常简单^_^