http://www.cnblogs.com/zhangbaochong/p/4928688.html

一、用NGUI创建虚拟摇杆贴图

先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button

二、通过虚拟摇杆获得x,y偏移值

 1 using UnityEngine;
2 using System.Collections;
3
4 public class JoyStick : MonoBehaviour
5 {
6
7 private bool isPress = false;
8 private Transform button;
9
10 //从虚拟摇杆的得到的x,y偏移值-1到1之间
11 public static float h = 0;
12 public static float v = 0;
13 void Awake()
14 {
15 button = transform.FindChild("button");
16 }
17 void OnPress(bool isPress)
18 {
19 this.isPress = isPress;
20 if (!isPress)
21 {
22 button.localPosition = Vector2.zero;
23 h = 0;
24 v = 0;
25 }
26 }
27
28 void Update()
29 {
30 if (isPress)
31 {
32 Vector2 touchPos = UICamera.lastEventPosition - new Vector2(91, 91);
33 float distance = Vector2.Distance(Vector2.zero, touchPos);
34 if (distance > 73)//虚拟摇杆按钮不能超过半径
35 {
36 touchPos = touchPos.normalized * 73;
37 }
38 button.localPosition = touchPos;
39
40 h = touchPos.x / 73;
41 v = touchPos.y / 73;
42 }
43 }
44 }

三、通过偏移控制移动 主角添加了character controller

 1 using UnityEngine;
2 using System.Collections;
3
4 public class PlayerMove : MonoBehaviour
5 {
6 private CharacterController cc;
7 public float speed = 3f;
8
9 void Awake()
10 {
11 cc = GetComponent<CharacterController>();
12 }
13
14 // Update is called once per frame
15 void Update ()
16 {
17 //键盘控制
18 float h = Input.GetAxis("Horizontal");
19 float v = Input.GetAxis("Vertical");
20
21 //虚拟摇杆控制
22 if (JoyStick.h != 0 || JoyStick.v != 0)
23 {
24 h = JoyStick.h;
25 v = JoyStick.v;
26 }
27
28 if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1f)
29 {
30 Vector3 targetDir = new Vector3(h, 0, v);
31 transform.LookAt(targetDir + transform.position);
32 cc.SimpleMove(targetDir * speed);
33 }
34
35
36 }
37 }

【转】简单的虚拟摇杆控制移动(NGUI)的更多相关文章

  1. 简单的虚拟摇杆控制移动(NGUI)

    一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button 二.通 ...

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

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

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

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

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

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

  5. 【转】NGUI版虚拟摇杆

    http://blog.csdn.net/anyuanlzh/article/details/40107577 下面是我用nui实现的一个虚拟摇杆. 1,示图 2.代码如下,都有比较详细的注释,就不说 ...

  6. Unity3D学习(三):利用NGUI实现一个简单的左右摇杆

    前言 小游戏Konster在测试的时候有热心玩家反馈左右移动手感不是很好,最主要的问题是:手指一旦按在手机屏幕的一个方向按钮上,向反方向滑动到另一个方向按钮上是不会改变玩家移动方向的. 具体如下图: ...

  7. NGUI版虚拟摇杆

    以下是我用nui实现的一个虚拟摇杆. 1,示图 2.代码例如以下,都有比較具体的凝视.就不说明了. using UnityEngine; using System.Collections; using ...

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

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

  9. Unity3D学习笔记(二十三):事件接口、虚拟摇杆、层级管理和背包系统

    事件接口 IDragHandler(常用):鼠标按下拖动时执行(只要鼠标在拖动就一直执行) IDropHandler:对象拖动结束时,如果鼠标在物体的范围内,执行一次(依赖于IDragHandler存 ...

随机推荐

  1. VMware-WorkStation 序列号(转)

    原文摘自: http://blog.csdn.net/twlkyao/article/details/8681927 最近升级了下虚拟机,可是还要序列号,网上找了几个可以用的,留着,备用. 9.0.2 ...

  2. matlab练习程序(最小包围矩形)

    又是计算几何,我感觉最近对计算几何上瘾了. 当然,工作上也会用一些,不过工作上一般直接调用boost的geometry库. 上次写过最小包围圆,这次是最小包围矩形,要比最小包围圆复杂些. 最小包围矩形 ...

  3. CDH中,执行HIVE脚本表联查权限问题。。

    文章来自http://www.cnblogs.com/hark0623/p/4174641.html 转发请注明 有时候执行表联查的时候总会出现没有权限写文件的情况. 这个时候使用sudo -H hi ...

  4. 分享Kali Linux 2016.2最新镜像201609

    分享Kali Linux 2016.2最新镜像20160919   Kali Linux官方继9月9日发布Kali Linux 2016.2的第36周镜像W36后,9月19日发布了Kali Linux ...

  5. 获取RenderedGeometry不对的处理

    如果是在代码中添加的形状,获取Shape.RenderedGeometry会出错. 这是由于WPF没有更新形状的原因,调用Shape.Arrange()后问题解决.

  6. ural 1268. Little Chu

    1268. Little Chu Time limit: 0.25 secondMemory limit: 64 MB The favorite occupation of Little Chu is ...

  7. Uiautomator打包使用第三方库,报错的解决方案

    问题引源: 在做自动化过程中,想在用例执行完毕后,自动生成该用例测试报告: 报告定义为Excel格式文件,且在用例执行过程中生成. 所以我在Uiautomator工程中引用了jxl.jar,用以处理E ...

  8. 二、saltstack基础配置

    super65   master   192.168.1.65 super66   minion    192.168.1.66 主配置文件: [root@super65 ~]# ll /etc/sa ...

  9. Oracle用户信息查询

    1.查看所有用户: select * from dba_users;    select * from all_users;    select * from user_users; 2.查看用户或角 ...

  10. [转]Entity Framework4.0 (七) EF4的存储过程

    本文转自:http://www.cnblogs.com/marksun/archive/2011/12/21/2296500.html 前面了解了EF4的CRUD的操作,你会发现EF4使用起来比较简单 ...