Ugui 实现简易版的Joystick
来源:互联网 发布:sheme数据库方案 编辑:程序博客网 时间:2024/05/17 22:34
Ugui 实现托拉拽的接口 在UnityEngine.EventSystems 只要找到相应的接口,怎么实现都很简单
遇到自适应问题,请调节好开发时候的Canvas 分辨率,以及调好Anchor
以下代码asix 即是最后摇杆需要的值
在使用自适应的过程发现,eventData.position 与 背景的大小 貌似有一点问题,明明宽度 大小是对的,可是经过检查,宽度 256的背景,坐标x 并非是从 0~256,而是要乘上 Canvas 的 scaleFactor 才是得到真是的坐标。
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;using System;/// <summary>/// 简易版的摇杆/// </summary>public class TJoystick : MonoBehaviour ,IPointerDownHandler,IDragHandler,IPointerUpHandler{ public Image bg; public Image knob; public float radius; public Vector2 asix; public Vector2 orgin; public Vector2 pos; /// <summary> /// 是否仅仅需要方向 /// </summary> public bool isPureDirection; public event Action OnUpEvent; public event Action OnDragEvent; private RectTransform knobRect; private Canvas canvas;// Use this for initializationvoid Start () { canvas = this.GetComponentInParent<Canvas>(); //矩形 x y应该一样大小才对 radius = bg.GetComponent<RectTransform>().sizeDelta.x/2 * canvas.scaleFactor; orgin = knob.GetComponent<RectTransform>().position; knobRect = knob.GetComponent<RectTransform>(); } public void OnDrag(PointerEventData eventData) { if (bg == null || knob == null) { Debug.Log("摇杆未赋值"); return; } float dis = Vector2.Distance(eventData.position, orgin); Vector2 direction = eventData.position - orgin; Debug.Log(radius * direction.normalized); if (dis > radius) knobRect.position = orgin + radius * direction.normalized; else knobRect.position = eventData.position; asix = direction.normalized; //如果还需要长度 if (!isPureDirection) { dis = Vector2.Distance(knobRect.position, orgin); float len = dis / radius; asix *= len; } if (OnDragEvent != null) OnDragEvent(); } public void OnPointerDown(PointerEventData eventData) { OnDrag(eventData); } public void OnPointerUp(PointerEventData eventData) { knobRect.position = orgin; asix = Vector2.zero; if (OnUpEvent != null) OnUpEvent(); }}
0 0
- Ugui 实现简易版的Joystick
- UGUI实现Joystick
- [Unity3d]基于UGUI写的Joystick
- Unity Joystick 虚拟摇杆的实现
- STM32下实现joystick
- 介绍一种五个键键盘的实现方法(Joystick)
- Unity3D 双摇杆 c# JoyStick 实现自己的双摇杆
- UGUI简易Typewriter
- UGUI实现的变速摇杆
- UGUI 实现滑入滑出的效果
- UGUI 实现物体的双击
- ugui简单的超链接实现
- UGUI 虚拟摇杆的实现
- [DirectX][DirectInput][JoyStick]DirectInput的JoyStick创建步骤整理
- NGUI版虚拟摇杆joystick
- ios joystick 虚拟摇杆实现 ( 非 Cocos2d )
- 音乐播放器的实现(简易版)
- Python版简易计算器的实现
- 听说pkl的博文都消失了?
- 2016年年终总结
- 视觉slam漫谈
- 论亲和图
- openwrt单个ipk编译过程
- Ugui 实现简易版的Joystick
- 索引失效 场景
- 【PAT】1050. String Subtraction
- ARM之内存
- HDU2830-Matrix Swapping II
- 用pycharm玩spark | windows平台
- 蓝桥杯 算法训练 最短路(最短路模板)
- openwrt打包过程
- [ZJOI2007] 仓库建设