Unity 实现手游里面滑轮摇杆控制移动

很多手游里面都有一个滑轮控制人物移动

我前段时间也研究了一下

下面附上源码,因为有注释我就不多说什么了

源码:



public class CoronaScripts : MonoBehaviour {

    大圆

    private RectTransform bigRect;

    小圆

    private RectTransform smallRect;

    滑轮被激活;默认没有

    private bool isActiveTrue = false;

    屏幕分辨率比率;这里Canvas是根据宽来缩放的

    private float biLv;

    用来存储鼠标和大圆的距离;是一个由大圆坐标指向鼠标坐标的方向向量

    private Vector3 dis;



    void Start () {

        bigRect = this.transform.GetChild (0).GetComponent<RectTransform> ();

        smallRect = bigRect.transform.GetChild (0).GetComponent<RectTransform> ();

        屏幕分辨率的宽除以实际屏幕宽度

        biLv = 1280f/ Screen.width;

    }



    void Update () {

        if (Input.GetMouseButtonDown (0)) {

            轮盘在屏幕左下角占屏幕1/4的大小范围有效

            if (Input.mousePosition.y < Screen.height / 2 && Input.mousePosition.x < Screen.width / 2) {

                限制左边和下边的间距,是上面的1/15的长度

                if (Input.mousePosition.y > Screen.height / 15 && Input.mousePosition.x > Screen.width / 15) {

                    滑轮当前状态被激活

                    isActiveTrue = true;    

                    显示滑轮

                    bigRect.gameObject.SetActive (true);

                    生成滑轮大圆的位置在鼠标在实际屏幕的位置

                    bigRect.anchoredPosition = Input.mousePosition * biLv;

                }

            }

        }

        被激活要做的事情;控制小圆的移动

        if (isActiveTrue) {

            小圆的坐标:等于相对于父物体大圆鼠标的坐标;等于大圆指向鼠标的一个向量;等于鼠标坐标减去大圆坐标;

            smallRect.anchoredPosition = Input.mousePosition * biLv - bigRect.anchoredPosition3D;

            鼠标到大圆的距离;是一个方向指向鼠标的向量

            dis = smallRect.anchoredPosition;

            如果鼠标到大圆的距离大于100

            if (dis.magnitude > 100) {

                将这个向量转换成单位向量乘以一百就是小圆的位置了

                dis = smallRect.anchoredPosition.normalized * 100;

                smallRect.anchoredPosition = dis;

            }

        }

        if (Input.GetMouseButtonUp (0)) {

            isActiveTrue = false;

            滑轮隐藏

            bigRect.gameObject.SetActive (false);

            小圆位置归位

            smallRect.anchoredPosition = Vector2.zero;

        }

    }

}


  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值