u3d怎么用虚拟摇杆控制u3d角色移动动

& & & &大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是。今天呢,我们来一起学习在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/&
阅读(...) 评论()知识为兴趣自学 培训视频为给学校兴趣小组免费培训 非商业活动
视频地址复制
Flash地址复制
Html地址复制
离线看更方便
用或其他应用扫描二维码
游戏制作兴趣小组实时unity培训视频录制
广播电视节目制作经营许可证:(沪)字第1248号
| 网络文化经营许可证:沪网文[6号 | 信息网络传播视听节目许可证:0910417 | 互联网ICP备案:沪ICP备号-3 沪ICP证:沪B2- | 违法不良信息举报邮箱: | 违法不良信息举报电话:转3Unity使用EasyTouch虚拟摇杆控制角色 - 刘俊良的博客 - CSDN博客
博客专家
Unity使用EasyTouch虚拟摇杆控制角色
本文介绍使用EasyTouch插件的创建一个虚拟摇杆来控制任务的移动
这个Demo源码包括EasyTouch插件我已经上传了,大家可以下载下来学习玩玩!!!
Easytouch插件下载链接
添加EasyTouch插件
首先把EasyTouch插件拖到unity空项目中
在目录栏中中多了一个Tools选项按钮
按如下图选择,在视图中便出多个虚拟按钮
在Hierarchy面板中多了几个对象
在这里我们只要了解Joystick的属性即可
Joystick属性介绍
在这里注意下Interaction type这个属性,需要添加Event,否则无法与委托事件交互
委托事件的介绍
打开Easy Joystick脚本
在代码中我们会看到定义了一些委托事件
只要我们在自己的代码中添加事件函数
当虚拟摇杆相应事件被触发时,会调用我们写的事件函数
在角色上挂载一个C#脚本
using UnityE
using System.C
public class PlayByJoyStick : MonoBehaviour
public EasyJ//虚拟摇杆
private float runSpeed=2.0f;
void Start()
anima=this.GetComponent&Animation&();
void OnEnable()
//注册事件
EasyJoystick.On_JoystickMoveStart += JoystickMoveS
EasyJoystick.On_JoystickMove += JoystickHandlerM
EasyJoystick.On_JoystickMoveEnd += JoysticHanderMoveE
void OnDisable()
//撤销事件
EasyJoystick.On_JoystickMoveStart -= JoystickMoveS
EasyJoystick.On_JoystickMove -= JoystickHandlerM
EasyJoystick.On_JoystickMoveEnd -= JoysticHanderMoveE
void JoystickMoveStart(MovingJoystick move)
Debug.Log(&主角开始移动&);
void JoystickHandlerMoving(MovingJoystick move)
if (move.joystick.name != &Joystick&)
//获取虚拟摇杆偏移量
float Axis_x = move.joystickAxis.x;
float Axis_y = move.joystickAxis.y;
Vector3 position = this.transform.
//设置角色的面向位置
this.transform.LookAt(new Vector3(position.x-Axis_x,position.y,position.z-Axis_y));
//切换角色动画
anima.CrossFade(&crouchRun&);
//主角移动
this.transform.Translate(Vector3.forward*Time.deltaTime*runSpeed);
void JoysticHanderMoveEnd(MovingJoystick move)
anima.CrossFade(&idleSword&);
将虚拟摇杆拖进属性面板里
我的热门文章新人求助 u3d自带的摇杆包做安卓游戏怎么用其控制方向【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:79,236贴子:
新人求助 u3d自带的摇杆包做安卓游戏怎么用其控制方向收藏
就是一个简单的2D游戏
就差插入摇杆来控制方向了。。求教!
openinstall免打包渠道统计,一个渠道统计链接同时兼容安卓iOS移动广告效果监控的好帮手
自带摇杆可以返回操作的向量,只需要把这些向量对应在角色上就行了呀~上下左右可以限制4个向量角度,话说我觉得这个比较难的应该是怎么限制在障碍之间行进吧。。。
登录百度帐号推荐应用}

我要回帖

更多关于 u3d 蓝牙摇杆 的文章

更多推荐

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

点击添加站长微信