简单的虚拟摇杆控制移动(NGUI)
一、用NGUI创建虚拟摇杆贴图

先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button
二、通过虚拟摇杆获得x,y偏移值
using UnityEngine;
using System.Collections; public class JoyStick : MonoBehaviour
{ private bool isPress = false;
private Transform button; //从虚拟摇杆的得到的x,y偏移值-1到1之间
public static float h = ;
public static float v = ;
void Awake()
{
button = transform.FindChild("button");
}
void OnPress(bool isPress)
{
this.isPress = isPress;
if (!isPress)
{
button.localPosition = Vector2.zero;
h = ;
v = ;
}
} void Update()
{
if (isPress)
{
Vector2 touchPos = UICamera.lastEventPosition - new Vector2(, );
float distance = Vector2.Distance(Vector2.zero, touchPos);
if (distance > )//虚拟摇杆按钮不能超过半径
{
touchPos = touchPos.normalized * ;
}
button.localPosition = touchPos; h = touchPos.x / ;
v = touchPos.y / ;
}
}
}
三、通过偏移控制移动 主角添加了character controller
using UnityEngine;
using System.Collections; public class PlayerMove : MonoBehaviour
{
private CharacterController cc;
public float speed = 3f; void Awake()
{
cc = GetComponent<CharacterController>();
} // Update is called once per frame
void Update ()
{
//键盘控制
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical"); //虚拟摇杆控制
if (JoyStick.h != || JoyStick.v != )
{
h = JoyStick.h;
v = JoyStick.v;
} if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1f)
{
Vector3 targetDir = new Vector3(h, , v);
transform.LookAt(targetDir + transform.position);
cc.SimpleMove(targetDir * speed);
} }
}
简单的虚拟摇杆控制移动(NGUI)的更多相关文章
- 【转】简单的虚拟摇杆控制移动(NGUI)
http://www.cnblogs.com/zhangbaochong/p/4928688.html 一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个B ...
- 【转】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存 ...
随机推荐
- Linux 挂载NTFS文件系统
步骤如下: 1.安装ntfs-3g包 [root@CS-1 pub]# yum install ntfs-3g 2.创建挂载目录 [root@CS-1 pub]# mkdir /data 3.挂载NT ...
- TypeError: Cannot read property 'style' of null 错误解决
错误信息例如以下: JSP代码例如以下: <c:if test ="${not empty excelErrors}"> <div id="excelE ...
- C#反射机制详解(转)
两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时 ...
- Jersey框架二:Jersey对JSON的支持
Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...
- follow through
follow through是什么意思_follow through的翻译_音标_读音_用法_例句 - 必应 Bing Dictionary Web Images Videos Maps News D ...
- osx下快捷键相应符号
2张图展示mac下相应的按键符号: 很多其它文章请前往小胖轩.
- Java參数传递方式
原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...
- BZOJ 1109 POI2007 堆积木Klo LIS
题目大意:给定一个序列,能够多次将某个位置的数删掉并将后面全部数向左串一位,要求操作后a[i]=i的数最多 首先我们如果最后a[i]=i的数的序列为S 那么S满足随着i递增,a[i]递增(相对位置不变 ...
- 关于安装linux时要怎么分区的考虑的參考方式?
对于使用最小化安装的centos7文件夹列表,注意链接方式的文件夹会在统计占用空间时不会算入的; watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWlkaX ...
- lucas定理解决大组合数取模
LL MyPow(LL a, LL b) { LL ret = ; while (b) { ) ret = ret * a % MOD; a = a * a % MOD; b >>= ; ...