Unity3D之虚拟摇杆

这是一个轻量级的虚拟摇杆

第一步:添加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


}

项目工程地址:

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页