zoukankan      html  css  js  c++  java
  • unity使用UGUI创建摇杆

    1.现在unity做一个项目,各种插件各种包,于是项目资源就无限变大了,其实一些简单的功能可以自己写,这里就是试着使用UGUI编写一个摇杆功能

    2.脚本如下:

    using UnityEngine;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
    using System.Collections;
    
    public class UGUIJoystick : MonoBehaviour,IDragHandler{
    
        public RectTransform joystickImage;
        public Vector3 startPos;
        public int maxDis = 70;
        public float speed = 5;
    
    	// Use this for initialization
    	void Start () {
            startPos = joystickImage.position;
    	}
    	
    	// Update is called once per frame
    	void Update () {
    
            if (Application.platform == RuntimePlatform.Android)
            {
                if (Input.touchCount <= 0)
                {
                    if (Vector3.Distance(joystickImage.position, startPos) > 0.01f)
                    {
                        joystickImage.position = joystickImage.position - (joystickImage.position - startPos).normalized * speed;
                    }
                }
            }
            else
            {
                if (!Input.GetMouseButton(0))
                {
                    if (Vector3.Distance(joystickImage.position, startPos) > 0.01f)
                    {
                        joystickImage.position = joystickImage.position - (joystickImage.position - startPos).normalized * speed;
                    }
                }
            }
    
    	}
    
       public void OnDrag(PointerEventData eventData)
        {
            Vector3 wordPos;
            //将UGUI的坐标转为世界坐标
            if (RectTransformUtility.ScreenPointToWorldPointInRectangle(joystickImage, eventData.position, eventData.pressEventCamera, out wordPos))
                joystickImage.position = wordPos;
    
            Vector3 dir = (joystickImage.position - startPos).normalized;
            if (Vector3.Distance(joystickImage.position, startPos) >= maxDis)
            {
                joystickImage.position = startPos + dir * maxDis;
            }
        }
    }
    

    3.这里除了一个简单的接口实现,就是坐标的转换,让摇杆一直跟着手指移动,这里就需要一个函数RectTransformUtility.ScreenPointToWorldPointInRectangle

    4.将这个脚本绑定在摇杆用于移动的图片上,效果如下:


    5.摇杆常用移动端,但是我并未在移动端测试

  • 相关阅读:
    nginx+vue刷新404
    java-Object类的解析(持续更新)
    Python源码学习(六)-PyCodeObject初探
    经典算法之不定方程问题
    MySql中的视图的概念及应用
    数据结构之 折半插入排序
    mahout算法源码分析之Itembased Collaborative Filtering实战
    【Android】为Android虚拟机创建SDCard
    30个酷毙的交互式网站(HTML5+CSS3)
    项目总结——也谈svn版本库迁移
  • 原文地址:https://www.cnblogs.com/liang123/p/6325891.html
Copyright © 2011-2022 走看看