实现效果:


实现:

使用NGUI添加虚拟摇杆背景和其子物体按钮,为按钮Attach  boxcollider和ButtionScript。为按钮添加如下脚本:

注意:其中的静态属性可以在控制物体移动的代码中访问用于控制。


 using UnityEngine;
using System.Collections; public class joyStickControl : MonoBehaviour { public static float h=;
public static float v = ; private float parentHeight;
private float parentWidth; private bool isPress=false; UISprite parentSpirite; void Awake()
{
parentSpirite = transform.parent.GetComponent<UISprite>();
parentWidth = parentSpirite.width;
parentHeight = parentSpirite.height;
} // Update is called once per frame
void Update () { if (isPress)
{
Vector2 touchpos = UICamera.lastTouchPosition; touchpos -=new Vector2(parentWidth / , parentHeight / );
float distance = Vector2.Distance(touchpos, Vector2.zero);
if(distance<)
{
transform.localPosition = touchpos;
}
else
{
transform.localPosition = touchpos.normalized * ;
} h = transform.localPosition.x / ;
v = transform.localPosition.y / ; }
else
{
transform.localPosition = Vector2.zero;
h = ;
v = ;
} } void OnPress(bool isPress)
{
this.isPress = isPress;
}
}


控制物体移动的代码:

注意:在使用虚拟摇杆的时候则忽略键盘控制的移动操作。

using UnityEngine;
using System.Collections; public class MoveCtroller : MonoBehaviour { private float speed = ;
// Use this for initialization
void Start () {
} // Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical"); if (joyStickControl.h!=||joyStickControl.v!=)
{
h = joyStickControl.h;
v = joyStickControl.v;
} if (Mathf.Abs(h)>0.3||Mathf.Abs(v)>0.3)
{
GetComponent<CharacterController>().SimpleMove(new Vector3(h * speed, , v * speed));
} }
}

注意:

normalized的属性获取当前向量的方向向量,在这里

transform.localPosition = touchpos.normalized * 53;
用于使按钮保持在虚拟摇杆背景圆的范围类。
touchpos -=new  Vector2(parentWidth / 2, parentHeight / 2);则是为了将触点位置与中心按钮的localpositon相一致。
 

Easy Touch 这个插件想必很多人都有所耳闻,可以迅速实现触摸操作。很适合移动端游戏的触摸输入控制,支持触摸,点击,拖拽,两指缩放。想要节省移动端游戏输入开发的时间可以下载使用

unity中虚拟摇杆的实现的更多相关文章

  1. Unity中使用摇杆控制

    Unity中使用摇杆控制 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50 ...

  2. EasyTouch中虚拟摇杆的使用EasyJoystick

    unity3d自带的虚拟摇杆显然没有EasyTouch好用 首先下载这个插件 http://pan.baidu.com/s/1hqJAbTa 下载完成后.导入到unity,可以看看里面的案例

  3. Unity 使用有限状态机 完美还原 王者荣耀 虚拟摇杆

    Unity 使用有限状态机 完美还原 王者荣耀 虚拟摇杆 效果如图所示 摇杆的UI组成 如图所示 简单的可以认为摇杆由1.2.3贴图组成 为摇杆的底座 为摇杆的杆 为摇杆的指向 可以理解这就是街机上的 ...

  4. unity零基础开始学习做游戏(三)鼠标输入,来个虚拟摇杆怎么样?

    -------小基原创,转载请给我一个面子 现在移动游戏越来越火,大家都拿手机平板玩游戏,没有键盘和手柄输入,所以就不得不看看虚拟摇杆怎么搞?(小基对于没有实体反馈不是很喜欢呢) 首先要清楚,鼠标操作 ...

  5. Unity 虚拟摇杆的实现

    一般地,虚拟摇杆是放在UI层的. 所以先在Canvas建立一个空对象(这里被命名成MoveController),再在空对象里面放一个作为摇杆图片的Image. 然后通过覆盖重写UnityEngine ...

  6. [Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动

    大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei.今天呢,我们来一起学习在Unity3D中使用EasyTouch虚拟摇杆来控制人物移动.虽然Un ...

  7. Unity3d项目入门之虚拟摇杆

    Unity本身不提供摇杆的组件,开发者可以使用牛逼的EasyTouch插件或者应用NGUI实现相关的需求,下面本文通过Unity自身的UGUI属性,实现虚拟摇杆的功能. 主参考 <Unity:使 ...

  8. 关于Unity中的Input输入事件

    截获鼠标,键盘的消息 监听事件我们都是在Update里面监听的. Unity的虚拟轴打开:Edit-->Project Settings-->Input,打开的各个Name就是双引号里面要 ...

  9. 解读Unity中的CG编写Shader系列八(镜面反射)

    转自http://www.itnose.net/detail/6117378.html 讨论完漫反射之后,接下来肯定就是镜面反射了 在开始镜面反射shader的coding之前,要扩充一下前面提到的知 ...

随机推荐

  1. Coursera 机器学习基石 第4讲 学习的可行性

    这一节讲述的是机器学习的核心.根本性问题——学习的可行性.学过机器学习的我们都知道,要衡量一个机器学习算法是否具有学习能力,看的不是这个模型在已有的训练数据集上的表现如何,而是这个模型在训练数据外的数 ...

  2. sql传统的拼接带来的危害

    现在大家来学习下sql是如何注入的,传统的拼接字符串会造成 注入形式就是在变量那使用<1=1>这样查询无论怎样都是正确的 -- var sql = "select name fr ...

  3. Linux 文件系统 的 学习

    学习参考大神:http://www.cnblogs.com/yyyyy5101/articles/1901842.html  总结:简介 http://linux.chinaunix.net/tech ...

  4. js取一个对象中的另一个对象

    最开始的截图 原本是想取到其中的foodName 先是用一个for循环循环了下 for (var i=0;i<res.data.length;i++) { this.goodsList.res. ...

  5. 用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学

    首发于:用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=428 给软 ...

  6. binlog2sql 用法

    binlog2sql 用法 使用场景:binlog2sql是根据mysql的binlog (要求格式是row)反解析出delete,update操作,对误操作数据进行还原. https://githu ...

  7. md5的理解

    md5之所以很难破解,是因为它是不可逆的(下面会解释),它是一种散列函数(哈希函数),并且是单向密码体制,即:从明文到密文的不可逆映射,只有加密过程没有解密过程. 为何说是不可逆映射呢?这是因为,md ...

  8. redis的docker化安装

    只需要关注几点: 端口映射 配置文件映射 持久化映射 要做的就是拉取官方镜像并把关注的几个点处理一下就好了: docker pull redis docker run -d -p : -v /data ...

  9. php源码建博客5--建库建表-配置文件-错误日志

    主要: 整理框架 建库建表 配置文件类 错误日志记录 --------------本篇后文件结构:-------------------------------------- blog ├─App │ ...

  10. Leecode刷题之旅-C语言/python-203移除链表元素

    /* * @lc app=leetcode.cn id=203 lang=c * * [203] 移除链表元素 * * https://leetcode-cn.com/problems/remove- ...