分享

Unity3D 虚拟摇杆(之一)

 阿修罗之狮猿授 2015-10-12

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


1.jpg


初始时考虑使用官方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./unity3D/WebPlayer/EasyTouch/ThirdPerson/WebPlayer.html

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

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

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

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

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


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


2.png


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


3.png


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


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


4.png


查看Joystick属性面板,如下:


5.png


6.png


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


7.png


在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角色移动,共有上下左右四个方向.


修改代码如下:


8.png


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


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


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


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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多