• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

U3D用EasyTouch虚拟摇杆控制人物挪动

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0810/595.html


[Unity3D]
 
       大家好,今天呢,我们来一同学习常州微信小程序开发在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 () 
{
//获取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");
}else
{
animation.Play("idle");
}
}
}
       官方提供的这个虚拟摇杆组件无法在电脑上测试,需求装置到手机上运转,我们来看看实践的效果吧:
 
      
 
    在手机上EasyTouch插件能够圆满运转,官方提供的Joystick没有反映,目前常州游戏开发培训不晓得是为什么,有时间的话继续研讨下啊。

上篇:上一篇:COCOS2D官方physics申明
下篇:下一篇:cocos2dx3.0的触摸优先和触摸mask问题