UGUI实现摇杆

效果图

立方体好比角色。可以利用右下角的摇杆控制角色移动

看看结构图

Image1:是外面圆圈

Image2:是蓝色圈

创建JoyStickScript.cs代码挂载在Image2上。这里没有实现控制立方体移动。有待改进

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEngine.UI;
 4 using UnityEngine.EventSystems;
 5
 6 /// <summary>
 7 /// 摇杆
 8 /// </summary>
 9 public class JoyStickScript : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
10 {
11
12     GameObject Player; //移动的对象
13
14     Vector3 originPosition;//起点坐标
15     Vector3 newPosition;
16     public float Radius = 40; //滚动的最大半径
17     float horizontal;
18     float vertical;
19     float speed;
20     void Awake()
21     {
22         Player = GameObject.FindWithTag("Player");
23     }
24
25     // Use this for initialization
26     void Start()
27     {
28         //originPosition = transform.position;//记录原点位置
29     }
30
31     // Update is called once per frame
32     void Update()
33     {
34         //float horizontal = Input.GetAxis("Horizontal");
35         //float veritcal = (transform.position.y - originPosition.y) / Radius;
36         //vertical = (transform.position.y - originPosition.y) / Radius;
37         //horizontal = (transform.position.x - originPosition.x) / Radius;
38         //Player.transform.Translate(horizontal, vertical, 0);
39         //Debug.Log(vertical);
40
41     }
42
43     public void OnEndDrag(PointerEventData eventData)
44     {
45         transform.position = originPosition; //归位到原点
46     }
47
48     Vector3 dir;
49     public void OnDrag(PointerEventData eventData)
50     {
51
52         dir = (Input.mousePosition - originPosition).normalized;
53
54         transform.position = Input.mousePosition; //设置当前摇杆位置
55
56         //当超过了外面的圆圈
57         if (Vector3.Distance(Input.mousePosition, originPosition) > Radius)
58             transform.position = originPosition + dir * Radius;
59
60         //vertical = (transform.position.y - originPosition.y) / Radius;
61         //horizontal = (transform.position.x - originPosition.x) / Radius;
62         print(originPosition + dir * Radius);
63         Player.transform.position = dir * Time.deltaTime;
64     }
65
66     public void OnBeginDrag(PointerEventData eventData)
67     {
68         originPosition = transform.position;//记录原点位置
69     }
70 }
时间: 2024-10-13 07:20:38

UGUI实现摇杆的相关文章

UGUI实现摇杆(模仿太极熊猫)

核心代码: using UnityEngine; using System.Collections; using UnityEngine.UI; public delegate void JoystickMoveDelegate(JoystickData data); public class Joystick : MonoBehaviour { public GameObject joystickUI; //摇杆整体UI,方便Active public RectTransform joysti

ugui自制摇杆。

珍爱生命,远离插件. 以上8个字,好好理解. 反正我是这么觉得. 我说的是unity,不是魔兽世界. 总有一天,我会一句一句写出属于自己的东西. 可以开始主题了.         如图所示,建立一个画布,添加两个image即可(注意父子关系,父亲为摇杆外面的那个圆圈),然后调整位置到左下角,调节锚点,选左下角那个. 接下来编辑脚本 using UnityEngine;using System.Collections;using UnityEngine.EventSystems; public c

【转】UGUI实现unity摇杆

http://blog.csdn.net/onafioo/article/details/46403801 http://www.winig.cc/archives/348 好久没有写文章了,最近在做项目是用的unity最新的ui系统UGUI,项目需要做一个摇杆,网上大部分都是用的插件和NGUI做的摇杆,unity自带的摇杆也不怎么好用,而最新的unity4.6.x来了,加入了最新的UI系统"UGUI",那我们怎么用UGUI来制作摇杆呢~大神勿喷,本人是技术渣渣. 比较出色的摇杆插件&

Unity用UGUI做虚拟摇杆

一.首先点击UI创建两个Image,将Image的Source Image改成自己想要的Texture即可,然后在Canvas下创建一空物体,将两个Image放在空物体下作为他的子对象: 然后为可以拖动的Image编写脚本,脚本如下:(有注释,就不多说了) using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class JoyStick 

UGUI实现的变速摇杆

去年刚刚结束UGUI,想做个贪吃蛇小游戏~ 结果当然是跟大多数程序猿一样,实现了核心操作逻辑,后面就不了了之了. 但是昨天网上看到个跟我这个demo一模一样的帖子,我贪吃蛇的蛇头还被抄袭了,这真是不能忍了,还是把原版放出来好了~ ---效果图点这里--- 这么朴实的中文+拼音的编程风格恐怕就我好意思用了. using System; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public cl

UGUI实现的虚拟摇杆,可改变摇杆位置

实现方式主要参考这篇文章:http://www.cnblogs.com/plateFace/p/4687896.html. 主要代码如下: 1 using UnityEngine; 2 using System.Collections; 3 using UnityEngine.UI; 4 using UnityEngine.EventSystems; 5 6 7 public delegate void JoystickMoveDelegate(JoystickData data); 8 9 p

DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)

UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这样工作量大大减少. 那今天我们来学习下UGUI + DoTween吧   UGUI进行简单的移动,放大,旋转 public class MyClass : MonoBehaviour { void Start () { Image image = transform.GetComponent<Ima

DoTween学习笔记(二) UGUI结合使用

UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这样工作量大大减少. 那今天我们来学习下UGUI + DoTween吧   UGUI进行简单的移动,放大,旋转 public class MyClass : MonoBehaviour { void Start () { Image image = transform.GetComponent<Ima

unity5.3+Easytouch4.3——EasyTouch及摇杆控件介绍

一.EasyTouch插件介绍 本文总结时,目前网上可以很方便的下载到EasyTouch4.3版本(额--你懂什么叫很方便的),由于某些版本和版本之间还是有很多改动,在此特意声明一下该文使用的版本是4.3,但插件的大体框架不会变动很多,也可以参考一下.有能力购买正版的童鞋也可以到官网支持一下EasyTouch. EasyTouch4.3版本开始已经支持UGUI,所以unity版本低于4.6的话是将不能使用这个版本EasyTouch,目前EasyTouch4.3亲测可以结合unity4.6~5.3