[Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei。今天呢,我们来一起学习在Unity3D中使用EasyTouch虚拟摇杆来控制人物移动。虽然Unity3D内置了一个Joystick组件(事实上就是一个GUITexture和一个Js脚本文件啦),但是博主在实际使用的时候发现这个内置的Joystick存在无法适应屏幕大小的问题,所以博主在这里向大家推荐使用EasyTouch这个插件,通过这个插件。我们能够高速地在应用中集成虚拟摇杆功能,并且能够通过改变贴图的方式来自己定义摇杆的外观,所以整体来说,这个插件是在触摸交互这部分功能中最好的一个插件。首先我们导入EasyTouch的资源包,然后通过Hedgehog Team->Extension->Adding a new joystick加入一个虚拟摇杆。此时会在层级视图中生成EasyTouch 和 Easy Joystick两个对象。如图:
此时,我们能够在游戏场景中看到EasyTouch默认的虚拟摇杆外观:
接下来,我们来解说下EasyJoystick的属性:
好了。假设大家对于这些属性没有什么问题的话,接下来我们就能够開始编写脚本了:
using UnityEngine;
using System.Collections; public class MoveController : MonoBehaviour { //当摇杆可用时注冊事件
void OnEnable()
{
EasyJoystick.On_JoystickMove += OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
} //当摇杆不可用时移除事件
void OnDisable()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
} //当摇杆销毁时移除事件
void OnDestroy()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
} //当摇杆处于停止状态时,角色进入待机状态
void OnJoystickMoveEnd(MovingJoystick move)
{
if (move.joystickName == "EasyJoystick")
{
animation.CrossFade("idle");
}
} //当摇杆处于移动状态时,角色開始奔跑
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != "EasyJoystick")
{
return;
}
//获取摇杆偏移量
float joyPositionX = move.joystickAxis.x;
float joyPositionY = move.joystickAxis.y;
if (joyPositionY != 0 || joyPositionX != 0)
{
//设置角色的朝向(朝向当前坐标+摇杆偏移量)
transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY));
//移动玩家的位置(按朝向位置移动)
transform.Translate(Vector3.forward * Time.deltaTime * 7.5F);
//播放奔跑动画
animation.CrossFade("Run");
}
}
}
我们将这个脚本绑定到我们的人物模型上面。然后执行程序:
这里我们再来说一下使用Unity3D自带的Joystick来实现人物移动控制。我们首先须要导入Standard Assets(Mobile)资源包,在这个资源包里我们能够发现两个实用的文件:Joystick.js和JoystickThumb.psd,它们各自是虚拟摇杆的脚本组件和外观贴图。我们手动创建一个GUITexture,并调整到合适的位置(悲剧就是从这里開始的),将这张贴图赋给GUITexture。然后绑定Joystick.js脚本。
博主习惯使用C#,对于Js脚本使用得不多,据说在Unity中Js脚本须要放到Standard Assets、 Pro Standard Assets和Plugins中的不论什么一个文件件里才干正常使用,所以非常多朋友反映的使用Unity内置的Joystick找不到类,就是这个原因。
这里博主使用的是国外朋友依据官方的脚本改写的C#脚本。我们编写一个C#脚本来响应虚拟摇杆:
using UnityEngine;
using System.Collections; public class JoystickController : MonoBehaviour { private Joystick mJoystick;
private float mSpeed=7.5F; void Start ()
{
//获取Joystick
mJoystick=GameObject.Find("UnityJoystick").GetComponent<Joystick>();
} void Update ()
{
//获取摇杆响应值
float mX=mJoystick.position.x;
float mY=mJoystick.position.y; //移动角色
if(mX!=0||mY!=0)
{
Vector3 mPos=new Vector3(transform.position.x+mX,transform.position.y,
transform.position.z+mY);
transform.LookAt(mPos);
//移动玩家的位置(按朝向位置移动)
transform.Translate(Vector3.forward * Time.deltaTime * 5F);
//播放奔跑动画
animation.Play("Run");
}else
{
animation.Play("idle");
}
}
}
官方提供的这个虚拟摇杆组件无法在电脑上測试,须要安装到手机上执行,我们来看看实际的效果吧:
在手机上EasyTouch插件能够完美执行,官方提供的Joystick没有反映。眼下不知道是为什么,有时间的话继续研究下啊。
參考文章:
1、Unity手游之路<五>虚拟摇杆之Unity内置插件实现
2、Unity手游之路<六>游戏摇杆之Easy Touch 3教程
每日箴言:决心走一条路的时候,就不要左顾右盼。风景再美也别流连
喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei
转载请注明出处,本文作者:秦元培,本文出处:http://blog.csdn.net/qinyuanpei/article/details/26204177
[Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动的更多相关文章
- CocosCreator游戏开发(四)实现摇杆控制角色功能
时隔3年,我又开始继续写这个系列的帖子了,也不知道是会写完全系列,还是再次夭折. 废话不多.直接开始主题了 主要实现的功能点包含这些内容:通过摇杆控制角色进行八方位移动,并按照各方位播放对应移动动画 ...
- 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结
前几天,个人著作<Unity3D/2D游戏开发从0到1(第二版)>经过七八个月的技术准备以及近3个月的日夜编写,在十一长假后终于完稿.今天抽出一点时间来,给广大热心小伙伴们汇报一下书籍概况 ...
- 关于《Unity3D/2D游戏开发从0到1》书籍再版说明
关于<Unity3D/2D游戏开发从0到1>第一版本在2015年7月1日全国发行,累计得到不少国内高校教师.培训机构的好评.但是由于Unity官方对于技术不断的升级与版本的快速迭代,基于U ...
- 《Unity3D/2D游戏开发从0到1》正式出版发行
<Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息: 书籍的名称: <Uni ...
- Unity3D 入门 游戏开发 Unity3D portal game development
Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...
- Unity3D手机游戏开发
<Unity3D手机游戏开发> 基本信息 作者: 金玺曾 出版社:清华大学出版社 ISBN:9787302325550 上架时间:2013-8-7 出版日期:2013 年8月 开本:16开 ...
- 【转】简单的虚拟摇杆控制移动(NGUI)
http://www.cnblogs.com/zhangbaochong/p/4928688.html 一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个B ...
- 简单的虚拟摇杆控制移动(NGUI)
一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button 二.通 ...
- Unity3D独立游戏开发日记(二):摆放建筑物
在沙盒游戏里,能自由建造是很重要的特点,比如说风靡全球的<我的世界>,用一个个方块就能搭建出规模宏大的世界.甚至有偏激的人说,没有自由建造,就不是一个真正的沙盒游戏.的确,沙盒游戏的魅力有 ...
随机推荐
- Win7安装IDL8.0以及破解
参考:http://bbs.06climate.com/forum.php?mod=viewthread&tid=5230 1.下载IDL8.1和证书 下载地址:http://yunpan.c ...
- c++中实现委托
成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(clo ...
- Web Farm和Web Garden的区别
在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使用它们的利弊.进一步地,我将介绍如何在各个版本的IIS中创建Web Garden. 英文原文 | Abhijit J ...
- RPC进阶篇
RPC实现结构拆解 RPC过程调用详解:RPC 服务端通过 RpcServer 去导出(export)远程接口方法,而客户端通过 RpcClient 去引入(import)远程接口方法. 客户端像调用 ...
- navicat 或者workbench 无法连接127.0.0.1(61)的解决方法
1.输入mysql -uroot 进入命令行模式, 2.输入"show variables like '%sock%';"查看sock文件所在位置 如: 3.配置客户端(以navi ...
- BFS寻路算法的实现
关于BFS的相关知识由于水平有限就不多说了,感兴趣的可以自己去wiki或者其他地方查阅资料. 这里大概说一下BFS寻路的思路,或者个人对BFS的理解: 大家知道Astar的一个显著特点是带有启发函数, ...
- PHP获取curl的错误
curl_error($ch) 用 curl_error 来获取 curl 的错误
- 《学习OpenCV》练习题第五章第二题abc
代码: #include <stdio.h> #include <opencv/highgui.h> #include <opencv/cv.h> #include ...
- 桶排序-OC
NSArray * b = @[@,@,@,@,@]; NSMutableArray *a = @[].mutableCopy; ; i<; i++) { a[i] = @; } for (NS ...
- other 遮罩层
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...