博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity使用UGUI创建摇杆
阅读量:6841 次
发布时间:2019-06-26

本文共 1553 字,大约阅读时间需要 5 分钟。

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

2.脚本如下:

[c#]   
 
  1. using UnityEngine;  
  2. using UnityEngine.UI;  
  3. using UnityEngine.EventSystems;  
  4. using System.Collections;  
  5.   
  6. public class UGUIJoystick : MonoBehaviour,IDragHandler{  
  7.   
  8.     public RectTransform joystickImage;  
  9.     public Vector3 startPos;  
  10.     public int maxDis = 70;  
  11.     public float speed = 5;  
  12.   
  13.     // Use this for initialization  
  14.     void Start () {  
  15.         startPos = joystickImage.position;  
  16.     }  
  17.       
  18.     // Update is called once per frame  
  19.     void Update () {  
  20.   
  21.         if (Application.platform == RuntimePlatform.Android)  
  22.         {  
  23.             if (Input.touchCount <= 0)  
  24.             {  
  25.                 if (Vector3.Distance(joystickImage.position, startPos) > 0.01f)  
  26.                 {  
  27.                     joystickImage.position = joystickImage.position - (joystickImage.position - startPos).normalized * speed;  
  28.                 }  
  29.             }  
  30.         }  
  31.         else  
  32.         {  
  33.             if (!Input.GetMouseButton(0))  
  34.             {  
  35.                 if (Vector3.Distance(joystickImage.position, startPos) > 0.01f)  
  36.                 {  
  37.                     joystickImage.position = joystickImage.position - (joystickImage.position - startPos).normalized * speed;  
  38.                 }  
  39.             }  
  40.         }  
  41.   
  42.     }  
  43.   
  44.    public void OnDrag(PointerEventData eventData)  
  45.     {  
  46.         Vector3 wordPos;  
  47.         //将UGUI的坐标转为世界坐标  
  48.         if (RectTransformUtility.ScreenPointToWorldPointInRectangle(joystickImage, eventData.position, eventData.pressEventCamera, out wordPos))  
  49.             joystickImage.position = wordPos;  
  50.   
  51.         Vector3 dir = (joystickImage.position - startPos).normalized;  
  52.         if (Vector3.Distance(joystickImage.position, startPos) >= maxDis)  
  53.         {  
  54.             joystickImage.position = startPos + dir * maxDis;  
  55.         }  
  56.     }  
  57. }  

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

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

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

 
 

转载于:https://www.cnblogs.com/feiqianlove/p/6825790.html

你可能感兴趣的文章
校验顺序和短路
查看>>
Buffer cache和page cache的区别
查看>>
京东家电&格力:跨界合作如何迎来行业效应?
查看>>
K8S集群Ingress https实践
查看>>
实战:Windows防火墙保护客户端安全
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(9)
查看>>
Yii2 HOW-TO(2):最佳实践(1)
查看>>
1、安装Lync Server 2013前的准备工作
查看>>
配置MYSQL组复制
查看>>
愿与君共同留住这段美好的历史轨迹!
查看>>
理解并实施:HSRP(CCNA200-120新增考点)
查看>>
【翻译】使用Ext JS设计响应式应用程序
查看>>
检查系统是否已经加载某些特殊AD模块
查看>>
DPM备份时 VdsError:无法扩展该卷,因为群集的数量将超过文件系统支持的最大群集数...
查看>>
黄章会卖掉魅族吗?
查看>>
有米平台上最赚钱的应用是怎样使用积分墙的?
查看>>
微软MCITP系列课程(三)本地用户与组账户的管理
查看>>
使用 StateServer 保存 Session 解决 Session过期,登陆过期问题。
查看>>
ubuntu 10.04.2本机 部署给力百货全过程20110530
查看>>
AutoVBA获取基本图元对象
查看>>