Unity基础入门分享unity3D技术分享Unity技术分享

Unity3d虚拟摇杆的控制

2019-04-14  本文已影响3人  潇千忘

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Rocker : MonoBehaviour {

    public UIButton rocker;

    public Transform center;//小圆

    public float ranger; //小圆移动的范围

    public Vector3 dir;//人物移动的向量

    //判断是否获取焦点

    public bool isPress = false;

    //单例模式

    public static Rocker ins;

    private void Awake()

    {

        ins = this;

    }

    // Use this for initialization

    void Start () {

        center = transform.Find("Center");

        //rocker.onClick.Add(new EventDelegate(RockerEvent));

    }

// Update is called once per frame

void Update () {

 

}

    void OnPress( bool press) {

        isPress = press;

        RockerEvent();

    }

   

    public void RockerEvent() {

        StartCoroutine(CenterMove());

    }

    IEnumerator CenterMove() {

        while (Input.GetMouseButton(0))

        {

            Vector3 pos = UICamera.mainCamera.ScreenToWorldPoint(Input.mousePosition);

            //获取偏移值

            Vector3 offset = pos - transform.position;

            //magnitude求出向量长度

            if (offset.magnitude > ranger)

            {

                //normalized归一化,求出单位向量

                offset = offset.normalized*ranger;

            }

            //给小圆赋值

            center.position = transform.position + offset;

            dir = new Vector3(offset.x,0,offset.y);

            yield return null;

        }

        center.position = transform.position;

        dir = Vector3.zero;

    }

}

上一篇下一篇

猜你喜欢

热点阅读