http://www.cnblogs.com/duyushuang/p/4457691.html

珍爱生命,远离插件。

以上8个字,好好理解。

反正我是这么觉得。

我说的是unity,不是魔兽世界。

总有一天,我会一句一句写出属于自己的东西。

可以开始主题了。

       

如图所示,建立一个画布,添加两个image即可(注意父子关系,父亲为摇杆外面的那个圆圈),然后调整位置到左下角,调节锚点,选左下角那个。

接下来编辑脚本

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class Joystick : MonoBehaviour, IBeginDragHandler, IDragHandler ,IEndDragHandler{

public Vector3 normalCenter;
    public static float joystickH;
    public static float joystickV;

private bool isDrag;
    private Vector3 startPos;
    private Vector3 dragPos;

void Awake()
    {
        isDrag = false;
        startPos = transform.localPosition;
    }

void Update()
    {
        if(isDrag)
        {
            float distance = Vector3.Distance(dragPos, normalCenter);
            Vector3 dirNormal = dragPos - normalCenter;
            if(distance > 45)
            {
                transform.localPosition = dirNormal.normalized * 50;
            }
            else
            {
                transform.localPosition = dirNormal;
            }
            joystickH = dirNormal.x / 1000;
            joystickV = dirNormal.y / 1000;
        }
        else
        {
            transform.localPosition = startPos;
            joystickH = 0;
            joystickV = 0;
        }
    }

public void OnBeginDrag(PointerEventData eventData)
    {
        isDrag = true;
    }

public void OnDrag(PointerEventData eventData)
    {
        dragPos = eventData.position;
    }

public void OnEndDrag(PointerEventData eventData)
    {
        isDrag = false;
    }
}

OK,回到unity运行程序,是不是可以动了呢。

让别的物体动的话,只需在控制移动的脚本里调用 joystickH  joystickV 即可,对应水平和垂直方向。

【转】ugui自制摇杆的更多相关文章

  1. ugui自制摇杆。

    珍爱生命,远离插件. 以上8个字,好好理解. 反正我是这么觉得. 我说的是unity,不是魔兽世界. 总有一天,我会一句一句写出属于自己的东西. 可以开始主题了.         如图所示,建立一个画 ...

  2. unity使用UGUI创建摇杆

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

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

    核心代码: using UnityEngine; using System.Collections; using UnityEngine.UI; public delegate void Joysti ...

  4. UGUI实现摇杆

    效果图

  5. UGUI简易摇杆

    实现 直接使用系统自带圆形控件图标 编写脚本, 实现UGUI拖拽事件 将多拽范围限定于给定半径和圆心的圆内 计算出等同于Input.GetAxis()的值,直接控制被控制物体 代码 using Sys ...

  6. unity使用ugui自制调色面板

    突然想实现一个调色面板,然后开工... 首先找找有没有什么接口可调,木有找到,找到一些调用win32实现的本地颜色面板的调用,感觉不科学,反正多平台肯定是搞不定的. 既然没找到,还是老老实实的自己写吧 ...

  7. [Unity] UGUI研究院之游戏摇杆

    最近在做Unity基于UGUI的摇杆,发现了一种非常简单并且巧妙的方法,原文在这里, 不过要FQ!!http://godstamps.blogspot.tw/2015/07/unity-ugui-sc ...

  8. 【转】Unity3D学习日记(二)使用UGUI制作虚拟摇杆控制摄像机

    http://blog.csdn.net/begonia__z/article/details/51178907 前天撸了一个简单的UGUI虚拟摇杆,今天我就利用前天做的虚拟摇杆做了一个简单的摄像机控 ...

  9. 【转】Unity3D学习日记(一)使用UGUI制作虚拟摇杆

    http://blog.csdn.net/begonia__z/article/details/51170059 如今手机游戏玩法多种多样,尤其使用虚拟摇杆进行格斗类游戏开发或者是MMORPG成为了主 ...

随机推荐

  1. Python开发第四篇

    文件操作 一.文件基本操作 打开文件方法:open f = open("test",encoding="") r:只读模式(只能读取文件,不能做写操作,文件不存 ...

  2. 编写WsHttpBinding的WCF通信方式

    这个通信方式本人实验了好久,需要一个重要的条件是服务端和客户端的发送内容方式都是相同的声明,需要在配置文件写入,客户端: <system.serviceModel> <binding ...

  3. {"errmsg":"invalid weapp pagepath hint: [IunP8a07243949]","errcode":40165}微信的坑

    使用微信官方文档,发送请求会报错--   pagepath无效! 正确修改-- 将标红的pagepath改成 page与上面相同即可

  4. API调用微信getWXACodeUnlimit()获取小程序码

    微信文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/qr-code/getWXACodeUnlimit.html? ...

  5. MySql学习笔记04

    复习 day01 数据库相关: create database db4 character set utf8; show databases; show create database db4; dr ...

  6. rsync常用命令和使用方法

    rsync是一个远程数据同步工具,可以实现数据的增量备份,这点比scp要好,scp只能全量备份.同步可以保持文件原有属性,传输过程加密,数据传输全. rsync 的传输模式有:        1. 本 ...

  7. 如何查看连接到手机热点的ip地址

    因为最近玩树莓派,需要手机做热点,然后用树莓派连接到这个热点上,苦于不知道树莓派被分配了什么样的ip地址,经过一番探索,我发现了两种办法, 安装一个 android terminal( 安卓命令行), ...

  8. ubuntu16.04更换镜像源

    1.备份原有 cp /etc/apt/sources.list /etc/apt/sources.list.old 2.打开阿里巴巴镜像源:  https://opsx.alibaba.com/mir ...

  9. Openstack搭建(流水账)

    Openstack管理三大资源:1.网络资源2.计算资源3.存储资源 Keystone 做服务注册 Glance 提供镜像服务 Nova 提供计算服务 Nova scheduler决策虚拟主机创建在哪 ...

  10. Python 正则表达式 匹配任意字符

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*')>>> ...