求教Unity3d的unity3d easytouchh插件的多点触控

[Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动 - 推酷
[Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
& & & &大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是
。今天呢,我们来一起学习在Unity3D中使用EasyTouch虚拟摇杆来控制人物移动。尽管Unity3D内置了一个Joystick组件(其实就是一个GUITexture和一个Js脚本文件啦),可是博主在实际使用的时候发现这个内置的Joystick存在无法适应屏幕大小的问题,所以博主在这里向大家推荐使用EasyTouch这个插件,通过这个插件,我们可以快速地在应用中集成虚拟摇杆功能,而且可以通过改变贴图的方式来自定义摇杆的外观,所以总体来说,这个插件是在触摸交互这部分功能中最好的一个插件。首先我们导入EasyTouch的资源包,然后通过Hedgehog Team-&Extension-&Adding&a new joystick添加一个虚拟摇杆,此时会在层级视图中生成EasyTouch 和 Easy Joystick两个对象。如图:
& & & & 此时,我们可以在游戏场景中看到EasyTouch默认的虚拟摇杆外观:
& & & &接下来,我们来讲解下EasyJoystick的属性:
& & & &好了,如果大家对于这些属性没有什么问题的话,接下来我们就可以开始编写脚本了:
using UnityE
using System.C
public class MoveController : MonoBehaviour {
//当摇杆可用时注册事件
void OnEnable()
EasyJoystick.On_JoystickMove += OnJoystickM
EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveE
//当摇杆不可用时移除事件
void OnDisable()
EasyJoystick.On_JoystickMove -= OnJoystickM
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveE
//当摇杆销毁时移除事件
void OnDestroy()
EasyJoystick.On_JoystickMove -= OnJoystickM
EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveE
//当摇杆处于停止状态时,角色进入待机状态
void OnJoystickMoveEnd(MovingJoystick move)
if (move.joystickName == &EasyJoystick&)
animation.CrossFade(&idle&);
//当摇杆处于移动状态时,角色开始奔跑
void OnJoystickMove(MovingJoystick move)
if (move.joystickName != &EasyJoystick&)
//获取摇杆偏移量
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 UnityE
using System.C
public class JoystickController : MonoBehaviour {
private Joystick mJ
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&);
animation.Play(&idle&);
& & & &官方提供的这个虚拟摇杆组件无法在电脑上测试,需要安装到手机上运行,我们来看看实际的效果吧:
& & 在手机上EasyTouch插件可以完美运行,官方提供的Joystick没有反映,目前不知道是为什么,有时间的话继续研究下啊。
参考文章:
每日箴言:
决心走一条路的时候,就不要左顾右盼,风景再美也别流连
& &喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei
& &转载请注明出处,本文作者:秦元培,本文出处:http://blog.csdn.net/qinyuanpei/article/details/
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致求教Unity3d的EasyTouch插件的多点触控
有人熟悉EasyTouch这个插件么?
用摇杆可以控制移动,右边的按钮可以挑,分别按的时候都没问题,但是一起用的时候就出问题了,按住摇杆的时候按按钮,摇杆的位置会变化,举例就是摇杆向左,按按钮的时候摇杆突然变右,不是按钮反应而是摇杆反应怎么回事???
打印TouchCount的数目始终都是0或者1,也就是我只能按摇杆或者按钮其中一样,想边走边跳做不到,在PC端利用Input很容易实现的移动和跳跃,换到手机的触屏就特别难实现了?求教解决办法
你用的什么版本?具体我还没看,不过你这个问题可以通过判断触摸区域解决吧
我用回U3D自带的摇杆之后它的touchCount就会增加,我用的EasyTouch是3.0版本,即使用EasyTouch的实例,有摇杆有按钮,摇杆控制方向,按钮控制开火,结果它的实例都是不支持控制方向的同时开火的,我用回自带的摇杆可以通过touchCount判断,但是你说的触摸区域的问题是指判断Touch的位置看下是否在按钮区域,但是这样涉及到了具体坐标,换到不同的手机,屏幕尺寸不同的时候麻烦不是很大么???
引用&1&楼&candycat1992&的回复:你用的什么版本?具体我还没看,不过你这个问题可以通过判断触摸区域解决吧
我用回U3D自带的摇杆之后它的touchCount就会增加,我用的EasyTouch是3.0版本,即使用EasyTouch的实例,有摇杆有按钮,摇杆控制方向,按钮控制开火,结果它的实例都是不支持控制方向的同时开火的,我用回自带的摇杆可以通过touchCount判断,但是你说的触摸区域的问题是指判断Touch的位置看下是否在按钮区域,但是这样涉及到了具体坐标,换到不同的手机,屏幕尺寸不同的时候麻烦不是很大么???
判断区域不需要那么精确,比如只要判断屏幕左边右边就可以了
给你找了篇,你看看
我的解决办法是用回了U3D自带的joystick,可以在网上找C#版本的用,它支持多点触控的。然后对于按钮(用GUITexture做的虚拟按钮就用),GUITexture里面有个HitText函数来测试这个GUITexture是否被触摸到了,利用这个就能解决问题了,例外用OnMouserDown()虽然调试的时候也有效果,但是要自己判断坐标位置,并且发布的时候按了没反应的。
在&easytouch&的inspector面板中的&general&Properties里
把Enable&unity&remote选项勾上
即使是一小步也想与你分享Unity3D教程之EasyTouch插件-菜鸟在线
Unity3D教程之EasyTouch插件
Unity3D教程之EasyTouch插件
浏览次数:5227
浏览次数:455
浏览次数:747
浏览次数:714
浏览次数:822
如果你对以下课程意犹未尽,,查看全部课程
HTML5全栈开发
HTML5最新课程
156 人在学
c#编程概述
C#快速入门
简单又好玩
120 人在学
没有账号?
s后重新发送
已有账号?
已有账号?
验证码确认
话题标题:
400-877-8190
登录后反馈有大神用过Easytouch插件吗,怎样让遥感不可见?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:69,421贴子:
有大神用过Easytouch插件吗,怎样让遥感不可见?收藏
我对它用了Easytouch.setEnable(false),它是没有用了,但那个遥感的图片还留在屏幕上。哪里有这个插件的详细教程啊?
UI视觉,原画,插画,影视动画,VR/AR,影视后期,游戏特效,游戏设计
没用过,用过内置的JOYstick
现在回帖算挖坟了么。。。。easy touch里面有一个dynamic joystick选项,把它勾上并选择相应的区域就是设置遥感不显示,只在点击相应区域的时候显示并作用,但是这样有一点不好的就是它会使touch start和touch end里面的方法失效。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 unity easytouch5教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信