【转】简单的虚拟摇杆控制移动(NGUI)
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)的更多相关文章
- 简单的虚拟摇杆控制移动(NGUI)
一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button 二.通 ...
- 【转】Unity3D学习日记(二)使用UGUI制作虚拟摇杆控制摄像机
http://blog.csdn.net/begonia__z/article/details/51178907 前天撸了一个简单的UGUI虚拟摇杆,今天我就利用前天做的虚拟摇杆做了一个简单的摄像机控 ...
- [Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei.今天呢,我们来一起学习在Unity3D中使用EasyTouch虚拟摇杆来控制人物移动.虽然Un ...
- Unity3d项目入门之虚拟摇杆
Unity本身不提供摇杆的组件,开发者可以使用牛逼的EasyTouch插件或者应用NGUI实现相关的需求,下面本文通过Unity自身的UGUI属性,实现虚拟摇杆的功能. 主参考 <Unity:使 ...
- 【转】NGUI版虚拟摇杆
http://blog.csdn.net/anyuanlzh/article/details/40107577 下面是我用nui实现的一个虚拟摇杆. 1,示图 2.代码如下,都有比较详细的注释,就不说 ...
- Unity3D学习(三):利用NGUI实现一个简单的左右摇杆
前言 小游戏Konster在测试的时候有热心玩家反馈左右移动手感不是很好,最主要的问题是:手指一旦按在手机屏幕的一个方向按钮上,向反方向滑动到另一个方向按钮上是不会改变玩家移动方向的. 具体如下图: ...
- NGUI版虚拟摇杆
以下是我用nui实现的一个虚拟摇杆. 1,示图 2.代码例如以下,都有比較具体的凝视.就不说明了. using UnityEngine; using System.Collections; using ...
- EasyTouch中虚拟摇杆的使用EasyJoystick
unity3d自带的虚拟摇杆显然没有EasyTouch好用 首先下载这个插件 http://pan.baidu.com/s/1hqJAbTa 下载完成后.导入到unity,可以看看里面的案例
- Unity3D学习笔记(二十三):事件接口、虚拟摇杆、层级管理和背包系统
事件接口 IDragHandler(常用):鼠标按下拖动时执行(只要鼠标在拖动就一直执行) IDropHandler:对象拖动结束时,如果鼠标在物体的范围内,执行一次(依赖于IDragHandler存 ...
随机推荐
- js执行顺序
我们知道有个全局的 window对象,js的一切皆window上的属性和方法.window上有个window.document属性,记录了整个html的dom树,document是顶层. body 和 ...
- thinkphp where()条件查询
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...
- Android的ListView详解
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...
- MySQL出现无法删除行记录
今天mysql在删除一张InnoDB类型的表时,出现错误Error No. 1451 MYSQL: Cannot delete or update a parent row: a foreign ke ...
- 参加 TiD 2015 是怎样一番体验?
人生有很多第一次,(专程打飞的去帝都)参加软件大会,我也是第一次. TiD 说到软件大会,QCon.PyCon 什么的早已如雷贯耳,没吃过猪肉还没见过猪跑?但对于 TiD,确实还是头一次听说. ...
- node连接--MySQL
MySQL驱动器:node-mysql; MySQL对象关系映射器:node-sequelize; 例子: package.json: { "name": "shoppi ...
- UVa1401 Remember the Word(DP+Trie树)
题目给定一个字符串集合有几种方式拼成一个字符串. dp[i]表示stri...strlen-1的方案数 dp[len]=1 dp[i]=∑dp[j](stri...strj-1∈SET) 用集合的字符 ...
- ZOJ1654 Place the Robots(二分图最大匹配)
最大匹配也叫最大边独立集,就是无向图中能取出两两不相邻的边的最大集合. 二分图最大匹配可以用最大流来解. 如果题目没有墙,那就是一道经典的二分图最大匹配问题: 把地图上的行和列分别作为点的X部和Y部, ...
- BZOJ3780 : 数字统计
从低位到高位数位DP,f[i][j][k]表示已经填了后i位,转化的数字为j,后i位与x后i位的大小关系为k的方案数. #include<cstdio> const int N=202,B ...
- cordova的android notify消息通知插件
最近在学习用CORDOVA(PHONEGAP)结合SENCHA TOUCH开发应用,想实现一个安卓下的消息通知功能,这个可以通过CORDOVA的插件来实现. 插件目录结构如下: notifyplugi ...