欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Unity用UGUI做虛擬搖桿

          一.首先點擊UI創(chuàng)建兩個Image,將Image的Source Image改成自己想要的Texture即可,然后在Canvas下創(chuàng)建一空物體,將兩個Image放在空物體下作為他的子對象;

遂溪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),遂溪網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為遂溪數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的遂溪做網(wǎng)站的公司定做!

然后為可以拖動的Image編寫腳本,腳本如下:(有注釋,就不多說了)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class JoyStick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler//需要注意繼承的接口,接口內(nèi)的方法需要實現(xiàn)
{

    /// <summary>
    /// 搖桿最大半徑
    /// 以像素為單位
    /// </summary>
    public float JoyStickRadius = 50;

    /// <summary>
    /// 搖桿重置所訴
    /// </summary>
    public float JoyStickResetSpeed = 5.0f;

    /// <summary>
    /// 當(dāng)前物體的Transform組件
    /// </summary>
    private RectTransform selfTransform;

    /// <summary>
    /// 是否觸摸了虛擬搖桿
    /// </summary>
    private bool isTouched = false;

    /// <summary>
    /// 虛擬搖桿的默認位置
    /// </summary>
    private Vector2 originPosition;

    /// <summary>
    /// 虛擬搖桿的移動方向
    /// </summary>
    private Vector2 touchedAxis;
    public Vector2 TouchedAxis
    {
        get
        {
            if (touchedAxis.magnitude < JoyStickRadius)
                return touchedAxis.normalized / JoyStickRadius;
            return touchedAxis.normalized;
        }
    }

    /// <summary>
    /// 定義觸摸開始事件委托 
    /// </summary>
    public delegate void JoyStickTouchBegin(Vector2 vec);

    /// <summary>
    /// 定義觸摸過程事件委托 
    /// </summary>
    /// <param name="vec">虛擬搖桿的移動方向</param>
    public delegate void JoyStickTouchMove(Vector2 vec);

    /// <summary>
    /// 定義觸摸結(jié)束事件委托
    /// </summary>
    public delegate void JoyStickTouchEnd();

    /// <summary>
    /// 注冊觸摸開始事件
    /// </summary>
    public event JoyStickTouchBegin OnJoyStickTouchBegin;

    /// <summary>
    /// 注冊觸摸過程事件
    /// </summary>
    public event JoyStickTouchMove OnJoyStickTouchMove;

    /// <summary>
    /// 注冊觸摸結(jié)束事件
    /// </summary>
    public event JoyStickTouchEnd OnJoyStickTouchEnd;

    void Start()
    {
        //初始化虛擬搖桿的默認方向
        selfTransform = this.GetComponent<RectTransform>();
        originPosition = selfTransform.anchoredPosition;
    }


    public void OnPointerDown(PointerEventData eventData)
    {
        isTouched = true;
        touchedAxis = GetJoyStickAxis(eventData);
        if (this.OnJoyStickTouchBegin != null)
            this.OnJoyStickTouchBegin(TouchedAxis);
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        isTouched = false;
        selfTransform.anchoredPosition = originPosition;
        touchedAxis = Vector2.zero;
        if (this.OnJoyStickTouchEnd != null)
            this.OnJoyStickTouchEnd();
    }

    public void OnDrag(PointerEventData eventData)
    {
        touchedAxis = GetJoyStickAxis(eventData);
        if (this.OnJoyStickTouchMove != null)
            this.OnJoyStickTouchMove(TouchedAxis);
    }


    void Update()
    {
        //當(dāng)虛擬搖桿移動到最大半徑時搖桿無法拖動
        //為了確保被控制物體可以繼續(xù)移動
        //在這里手動觸發(fā)OnJoyStickTouchMove事件
        if (isTouched && touchedAxis.magnitude >= JoyStickRadius)
        {
            if (this.OnJoyStickTouchMove != null)
                this.OnJoyStickTouchMove(TouchedAxis);
        }

        //松開虛擬搖桿后讓虛擬搖桿回到默認位置
        if (selfTransform.anchoredPosition.magnitude > originPosition.magnitude)
            selfTransform.anchoredPosition -= TouchedAxis * Time.deltaTime * JoyStickResetSpeed;
    }

    /// <summary>
    /// 返回虛擬搖桿的偏移量
    /// </summary>
    /// <returns>The joy stick axis.</returns>
    /// <param name="eventData">Event data.</param>
    private Vector2 GetJoyStickAxis(PointerEventData eventData)
    {
        //獲取手指位置的世界坐標(biāo)
        Vector3 worldPosition;
        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(selfTransform,
                 eventData.position, eventData.pressEventCamera, out worldPosition))
            selfTransform.position = worldPosition;
        //獲取搖桿的偏移量
        Vector2 touchAxis = selfTransform.anchoredPosition - originPosition;
        //搖桿偏移量限制
        if (touchAxis.magnitude >= JoyStickRadius)
        {
            touchAxis = touchAxis.normalized * JoyStickRadius;
            selfTransform.anchoredPosition = touchAxis;
        }
        return touchAxis;
    }


}

二.接下來,就是拖拽p_w_picpath使物體能夠移動了;

為該物體添加腳本:

using UnityEngine;
using System.Collections;

public class JoyStick3D : MonoBehaviour
{

    private JoyStick js;

    void Start()
    {
        js = GameObject.FindObjectOfType<JoyStick>();
        js.OnJoyStickTouchBegin += OnJoyStickBegin;
        js.OnJoyStickTouchMove += OnJoyStickMove;
        js.OnJoyStickTouchEnd += OnJoyStickEnd;
    }


    void OnJoyStickBegin(Vector2 vec)
    {
        Debug.Log("開始觸摸虛擬搖桿");
    }

    void OnJoyStickMove(Vector2 vec)
    {
        Debug.Log("正在移動虛擬搖桿");

        //設(shè)置角色朝向
        Quaternion q = Quaternion.LookRotation(new Vector3(vec.x, 0, vec.y));
        transform.rotation = q;

        //移動角色
        transform.Translate(Vector3.forward * 75f * Time.deltaTime);
    }

    void OnJoyStickEnd()
    {
        Debug.Log("觸摸移動搖桿結(jié)束");

     
    }

    void OnGUI()
    {
        GUI.Label(new Rect(30, 30, 200, 30), "3D模式下的虛擬搖桿測試");
    }
}

三.接著可以試著運行,可以看到物體可以隨著p_w_picpath的拖動而移動,但是有不好的地方,就是拖拽的p_w_picpath超過半徑所設(shè)置的半徑JoyStickRadius時,p_w_picpath的位置就會固定在一個位置不動,

而且當(dāng)在半徑范圍內(nèi)時,物體不會持續(xù)移動,這個就不好了,不知道有那位大神能夠邦杰呢?

網(wǎng)頁題目:Unity用UGUI做虛擬搖桿
URL標(biāo)題:http://aaarwkj.com/article34/jjghse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、企業(yè)建站、微信公眾號、品牌網(wǎng)站設(shè)計標(biāo)簽優(yōu)化、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
婷婷网色偷偷亚洲男人| 黄色污网站在线观看免费| av天堂官网在线人妻| 久久夜色精品亚洲国产| 男女性生活视频成年人观看| 中文字幕人成乱码在线| 麻豆剧传媒国产精选av| 国内精品自产拍久久久久久久久91 | 岛国av不卡一二三区| 亚洲精品福利一二三区| 丰满人妻的诱惑中文字幕| 最新欧美精品一区二区| 蜜桃精品人妻一区二区三区| 日本免费一区中文字幕| 国产特级黄色片免费看| 全部网站免费在线观看等| 中日中文av一区二区三区| 亚洲区自拍偷拍一区二区| 国产99久久精品免费看| 亚洲欧洲国产视频一区二区| 国产欧美日韩国产欧美日| 亚洲黄色av网站在线| 中文字幕伦理一区二区三区| 国内成人免费在线视频| 美女网站色在线免费观看午夜精品| 欧美日韩亚洲国产一区| 日韩精品一区中文字幕在线| 91国产在线视频免费观看| 上海老熟女啪啪露脸高潮| 亚洲精品亚洲一区亚洲二区| 国内精品自拍亚洲视频| 黄色av手机在线观看| 黄色片黄色片美女黄色片亚洲黄色片| 日本午夜理论视频在线播放| 日韩精品一区二区在| 日本东京热不卡一区二区| 日韩久久这里只有精品视频| 六月丁香花五月婷婷| 国产麻豆精品传媒av| 日韩精品成人一区二区三区免费| 欧美激情中文字幕日韩精品|