实现效果:


实现:

使用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. CSU-ACM2018暑假集训6—BFS

    可以吃饭啦!!! A:连通块 ZOJ 1709 Oil Deposits(dfs,连通块个数) B:素数变换 打表+bfs POJ 3216 Prime Path(打表+bfs) C:水bfs HDU ...

  2. win7环境中使用notepad++配置python IDE

    1, 下载notepad++,并安装 http://notepad-plus-plus.org/download/v6.5.5.html 2, 下载python的win版本,并安装 https://w ...

  3. JS异步编程 (1)

    JS异步编程 (1) 1.1 什么叫异步 异步(async)是相对于同步(sync)而言的,很好理解. 同步就是一件事一件事的执行.只有前一个任务执行完毕,才能执行后一个任务.而异步比如: setTi ...

  4. ORACLE中查询语句的执行顺及where部分条件执行顺序测试

    Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...

  5. Spring入门第一课:Spring基础与配置Bean

    1.入门 Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心.由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所 ...

  6. Zabbix——部署(agent和proxy安装)

    前提条件: 已经完成对Zabbix-server的安装 已经完成对Mysql的安装 并且相互和正常使用和访问 配置agent服务器: rpm -Uvh https://repo.zabbix.com/ ...

  7. MySQL高可用架构故障自动转移插件MHA

    mha高可用架构是目前mysql高可用故障转移比较成熟的解决方案.MHA插件复杂监控mysql主节点的健康情况.在主节点宕机后,MHA把binlog通过ssh传到从节点进行重做补齐.并提升其中一个从节 ...

  8. What is a schema in a MySQL database?

    摘自:https://www.quora.com/What-is-a-schema-in-a-MySQL-database What is schema? In MySQL, physically, ...

  9. pt-online-schema-change在线修改表结构

    工具简介 pt-osc模仿MySQL内部的改表方式进行改表,但整个改表过程是通过对原始表的拷贝来完成的,即在改表过程中原始表不会被锁定,并不影响对该表的读写操作.首先,osc创建与原始表相同的不包含数 ...

  10. md5的理解

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