打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Unity3D 虚拟摇杆(之一)

想使用Unity3D在手机上实现虚拟摇杆的功能,通过拖动左侧虚拟摇杆控制人物移动,在手机上运行效果如下:



初始时考虑使用官方Joystick,但是使用GUITexture时与游戏中其他功能冲突.


使用官方Joystick的JavaScript版本参考雨松MOMO博客,

链接:http://blog.csdn.net/xys289187120/article/details/6941061

C#版本代码链接:http://blog.csdn.net/hiramtan/article/details/8834187


最后选择使用插件EasyJoystick来实现这个功能.

插件Demo链接:

第一视角:http://www.blitz3dfr.com/unity3D/WebPlayer/EasyTouch/ThirdPerson/WebPlayer.html

第三视角:http://www.blitz3dfr.com/unity3D/WebPlayer/EasyTouch/ThirdPerson/WebPlayer.html

插件购买链接:http://u3d.as/content/matthew-worrall/mobile-joystick-controller/3kq

答应过插件原作者写一篇中文教程,教程如下:

英文官方教程链接:http://download.csdn.net/detail/hiramtan/5286699

英文官方编码目录链接:http://download.csdn.net/detail/hiramtan/5286745


1.按照下面的指示创建一个虚拟摇杆:



添加后Unity3D游戏预览窗口如下:



然后发现面板中多了下面两项,创建一个空物体,命名为JoystickManager控制虚拟摇杆事件,如下:


一定要记得第二项"Joystick"物体的名字与JoystickManager.cs代码中的名字一致,下面的步骤会有提示.



查看Joystick属性面板,如下:




通过下面的面板,可以将虚拟摇杆更改为自己的图片资源.



在JoystickManager中添加官方Demo中的示例代码:


  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. /// <summary>  
  5. /// Joystick event  
  6. /// </summary>  
  7. public class JoystickEvent : MonoBehaviour {  
  8.   
  9.     void OnEnable(){  
  10.         EasyJoystick.On_JoystickMove += On_JoystickMove;  
  11.         EasyJoystick.On_JoystickMoveEnd += On_JoystickMoveEnd;  
  12.     }  
  13.       
  14.     void OnDisable(){  
  15.         EasyJoystick.On_JoystickMove -= On_JoystickMove ;  
  16.         EasyJoystick.On_JoystickMoveEnd -= On_JoystickMoveEnd;  
  17.     }  
  18.          
  19.     void OnDestroy(){  
  20.         EasyJoystick.On_JoystickMove -= On_JoystickMove;      
  21.         EasyJoystick.On_JoystickMoveEnd -= On_JoystickMoveEnd;  
  22.     }  
  23.       
  24.       
  25.     void On_JoystickMoveEnd(MovingJoystick move){  
  26.         if (move.joystickName == "Move_Turn_Joystick"){  
  27.             animation.CrossFade("idle");  
  28.         }  
  29.     }  
  30.     void On_JoystickMove( MovingJoystick move){  
  31.          
  32.         if (move.joystickName == "Move_Turn_Joystick"){  
  33.             if (Mathf.Abs(move.joystickAxis.y)>0 && Mathf.Abs(move.joystickAxis.y)<0.5){  
  34.                 animation.CrossFade("walk");  
  35.                   
  36.             }     
  37.             else if (Mathf.Abs(move.joystickAxis.y)>=0.5){  
  38.                 animation.CrossFade("run");   
  39.             }  
  40.         }  
  41.     }  
  42. }  
复制代码


注意事项:将此代码中的move.joystickName修改为上面红色标注的名字(hierarchy第二项的名字"Joystick")

官方示例控制的是3D模型,而我这里需要虚拟摇杆控制2D角色移动,共有上下左右四个方向.


修改代码如下:



将虚拟摇杆分为向左或向右拖拽,向左拖拽又分为左上,左,左下.这需要判断虚拟摇杆在x/y轴偏移量的大小,如上代码所示为虚拟摇杆向左拖拽逻辑,


根据偏移量大小播放向左/向上/向下动画,虚拟摇杆同时控制角色的position.向右拖拽时同理.这样虚拟摇杆控制角色移动就完成了.


如有任何建议请发邮件至hiramtan@qq.com


原文链接:http://blog.csdn.net/hiramtan/article/details/8834012


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Unity手游之路<五>虚拟摇杆之Unity内置插件实现
Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
unity3d 三分钟实现简单的赛车漂移
【xbox开发】unity3d xbox one手柄键位
Unity3D研究院之使用Animation编辑器编辑动画
Python实现数字人直播的技术架构及代码案例详解!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服