这是一个轻量级的虚拟摇杆
第一步:添加UI图片在场景中,并改名为Joystick
第二步:设置图片锚点(左下角)
第三步: 添加JoysticksCtl脚本(代码如下)挂载到场景中的图片上
第四步:在Joystick图片下创建子物体图片Point,为图片添加Event Trigger脚本,添加Drag和Point Up事件
第五步:建立空物体Border 设置锚点
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems ;
public class JoysticksCtl : MonoBehaviour
{
//声明拖拽委托
public delegate void JoysticksDragDelegate(Vector3 posVector3);
public event JoysticksDragDelegate JoysticksDrag;
//声明抬手委托
public delegate void JoysticksUpDelegate();
public event JoysticksUpDelegate JoysticksUp;
private Transform m_Point;//小球
private Vector3 m_StartPoint;//小球的起始位置
private float m_R;//半径
void Start ()
{
m_Point= transform.Find("Point");
Transform m_Border = transform.Find("Border");
m_StartPoint = m_Point.position ;
m_R = Vector3 .Distance(m_StartPoint, m_Border.position );
}//Start ()_end
//鼠标拖拽事件
public void OnPointDragAction()
{
//如果球在半径内
if (Vector3.Distance( Input.mousePosition ,m_StartPoint )<m_R )
{
m_Point.position = Input.mousePosition;
}
else
{
Vector3 dir = Input.mousePosition - m_StartPoint;
m_Point.position = m_StartPoint +dir.normalized *m_R ;
}
}
//鼠标抬起
public void OnPointUpAction()
{
m_Point.position = m_StartPoint ;
}
#endregion
}
项目工程地址: