[Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
来源:互联网 发布:大数据算法设计 编辑:程序博客网 时间:2024/06/07 05:00
大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是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 () {//获取JoystickmJoystick=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虚拟摇杆控制人物移动
- Unity3D easytouch虚拟摇杆及其应用
- Unity3D之Easytouch控件控制主角移动
- Unity使用easytouch虚拟摇杆控制角色移动
- Unity3d制作虚拟按钮控制人物移动
- Unity3D之虚拟摇杆
- Unity3d 双摇杆 easyTouch
- Unity3d 双摇杆 easyTouch
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity使用EasyTouch虚拟摇杆控制角色
- Unity3D 人物移动控制
- Unity3d 控制角色移动 键盘按键与虚拟摇杆
- unity3d之鼠标控制人物移动
- Unity3D EasyTouch JoyStick控制小黄人的移动
- [Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- Unity3d 键盘控制人物移动
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- 2014真正实现无需跑包,无需pin,10分钟连破10个网实战教程(包含视频语音教程)
- PAT-B 1008. 数组元素循环右移问题(python)
- PAT-B 1009. 说反话(python)
- C语言检查本机公网IP并发送邮件
- Visual C++ 2012/2013的内存溢出检测工具
- [Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
- 12户居民自凑30万装电梯 未经审批被停工整改
- 20140517济南开源中国源创会技术演讲总结
- Altium Designer 10 介绍、原理图及其模板常规设计
- 从今天起,在此博客中开源《赛敏分布式文件系统 smdfs》的各个模块,一天一点积累。
- iOS Delegate学习(送花ABC,一个悲伤的故事)
- iOS JSON解析学习
- 水库多目标生态调度
- 水电水利建设项目水环境与水生生态保护技术政策