游戏开发之U3D插件EasyTouch5.x使用

来源:互联网 发布:动漫视频网站源码 编辑:程序博客网 时间:2024/06/08 15:54

           游戏开发之U3D插件EasyTouch5.x使用

本篇只讲EasyTouch5.x的使用,不讲源码。本来想把EasyTouch5.x的使用手册翻译一遍,想来也是没那个时间。

第一步,导入EasyTouch5.x.packge,途径有两种,1.UnityAssetStore下载最新版本的EasyTouch插件,或者2.去导入其他童鞋下载好的资源包,当然土豪最好自己购买一下吧,毕竟还是得支持一下EasyTouch开发团队,因为他们给其他游戏开发者们提供了便利,省去了再去开发的成本和时间。导入进项之后会在GameObject下拉菜单中出现相应的选项列表EasyTouch Controls,EasyTouch


计


第二步,摇杆的使用介绍,怎么创建摇杆和对摇杆属性的一些介绍。创建摇杆操作点击GameObject=>EasyTouchControls=>Joystick

创建完之后会在Hierarchy面板出现摇杆物体,Game视图也会出现一个摇杆。


计

 

    因为EasyTouch5.x是基于UGUI写的,一改以前基于OnGUI的写法,所以它的物体出现方式和创建Canvas下的控件一样,也会出现CanvasEventSystem,而Joystick也会成为Canvas的子物体。摇杆Joystick的名字和以往EasyTouch4.x的名字改写一样,都不能在Hierarchy面板下修改,只能在Inspecter面板的ETC Joystick组件下面的属性Joystick Name 修改名字。

ETC Joystick 组件介绍一下吧,

1.Joystick name 修改摇杆的名字;

2.Activated 是否激活,勾选之后,摇杆才可以使用,不勾选的话点击不会起作用;

3.Visible 是否在Game视图显示,勾选之后会在Game视图出现,不勾选就不会出现在Game视图;

4.Use Fixed Update 是否使用固定更新,勾选之后会在Fixed Update方法里执行相关的摇杆参数更新;

5.Unregister at disabling time 是否在脚本不可用的时候取消注册事件。

勾选之后会执行,不勾选的话不会执行。

6.Position&Size

控制摇杆整体的位置和大小。

Type 有两个选项,

Static 静态,摇杆的位置在Game视图中的位置是固定不变的;

Dynamic 动态的,摇杆的位置是动态的,随着鼠标PC或手指(移动平台)的点击位置而出现;

Joystick area 指定摇杆出现的区域;

Background size 摇杆背景图片的尺寸大小;

Thumb size 摇杆中间可控的图片尺寸大小;

Radius based on 摇杆背景的半径基于本身图片的长或宽;

7.Axes Properties 虚拟键属性

Enable Unity axes 是否使用Unity 中的虚拟键;

Allow Unity axes on standalone 是否允许在Pc平台使用Unity虚拟键;

Force visible 是否强制显示;

8.Turn&Move diretion Action 是否使用旋转和移动行为

勾选之后,会出现如下界面,可以往Direct action to 选项中拖一个游戏对象,然后可以通过摇杆控制游戏对象的移动旋转。

 

      计

 

比如我新建一个Cube,然后把这个Cube拖过来,运行Unity,就可以通过摇杆控制Cube的移动和旋转了。


      计

 

Auto link on tag 勾选之后可以通过标签自动查找到该游戏对象,

比如我勾选上,选中Player标签,然后创建一个Cube,然后给Cube设置一下Player标签。也可以通过摇杆控制角色的移动。


       计


Move cure 移动曲线,可以自己调整;

Move speed 控制指定物体的移动速度,可以自己调整;

Intial rotation 开始的角度;

Lock in jump 是否锁定jump轴 

Horizonal axis水平轴A键和D

Vertical axis   垂直轴W键和S

Camera关于摄像机的设置;

Enable tracking是否可跟踪物体;

勾选之后,会弹出如下窗口:


       计

 

Auto link on tag也是根据标签查找Camera进行控制;

Target mode目标模式有四种,一般默认就好;

Camera target摄像机观察的目标,可以把游戏对象拖过来,也可以根据标签查找;

Camera mode摄像机运动模式,有两种,一般默认Follow就好;

Offset指摄像机与射线机观察的目标的相对位置;

9.Sprites设定摇杆的背景图片,可以点select进行图片选择;


      计

 

10.Move Events指移动摇杆时可以绑定的方法,和UGUIButton组件绑定方法一样,唯一的缺点就是把指定方法的参数限定了。(这里是Vector2


      计 

 

第三步,对ETCButton组件的使用和相关属性进行介绍。

它的创建和摇杆一样,也是从菜单栏GameObject=>EasyTouch Controls=> Button,创建完之后如下图,名字修改和摇杆修改一样。


计 

 

主要介绍一下Button控件自身带的ETC Button组件的Behaviour属性,可以它的这些属性实现控制模型跳跃的功能。具体设置如下,需要注意的是模型身上必须加一个Character Controller组件。


       计

 

Button绑定事件,和UGUIButton使用方法相同,也是拖一个游戏对象,选择它身上的脚本,然后选择指定的方法,注意方法必须定义成Public


       计 

 

    最后介绍一下在脚本里面怎么使用摇杆和Button

    怎么用摇杆控制角色的移动呢?第一步,先在Start方法里面根据摇杆Joystick名字获取到具体的摇杆moveJoystick,然后有两种方式解决!

    下面是我写的第一个通过摇杆控制角色移动的脚本示例。

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class PlayerController :MonoBehaviour {

    //定义角色控制器组件

    private CharacterController chController;

    //定义移动速度

    public float moveSpeed=5;

    //定义摇杆组件

    private ETCJoystick moveJoystic;

 

    void Start () {

        //获取角色控制器组件

        chController =this.GetComponent<CharacterController>();

        //获取指定摇杆,ETCInput.GetControlJoystick(摇杆名字);

        //注意获取指定摇杆的方法,不要放在Awake里面,必须在Start里面,

        //因为放在Awake里面的时候会报null的错,可能跟它底部逻辑顺序有关吧!

        moveJoystic =ETCInput.GetControlJoystick("moveJoystick");

}

void Update () {

        //获取摇杆水平轴的值

        float h = moveJoystic.axisX.axisValue;

        //获取摇杆垂直轴的值

        float v = moveJoystic.axisY.axisValue;

        if(h!=0||v!=0)

        {

            //获取摇杆的方向

            Vector3 dir = new Vector3(h, 0, v);

            //把方向转换到相机的坐标系中

            dir =Camera.main.transform.TransformDirection(dir);

            //方向的y轴值始终设为0

            dir.y = 0;

            //把方向向量归一化

            dir.Normalize();

            //指定一个4倍的向量

            Vector3 sp = dir * 4;

            //控制模型的朝向

            this.transform.LookAt(sp + this.transform.forward);

            //用角色控制器控制移动

            chController.Move(dir*moveSpeed*Time.deltaTime);

        }

}

}

 

 

    第二种呢可以,通过绑定事件实现移动,如下方式:

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class PlayerController :MonoBehaviour {

    //定义角色控制器组件

    private CharacterController chController;

    //定义移动速度

    public float moveSpeed=5;

    //定义摇杆组件

    private ETCJoystick moveJoystic;

 

    void Start () {

        //获取角色控制器组件

        chController =this.GetComponent<CharacterController>();

        //获取指定摇杆,ETCInput.GetControlJoystick(摇杆名字);

        //注意获取指定摇杆的方法,不要放在Awake里面,必须在Start里面,

        //因为放在Awake里面的时候会报null的错,可能跟它底部逻辑顺序有关吧!

        moveJoystic =ETCInput.GetControlJoystick("moveJoystick");

        //给摇杆绑定方法,通过如下方式,方法参数必须是Vector2

        moveJoystic.onMove.AddListener(OnMove);

}

    //摇杆绑定方法

    private void OnMove(Vector2 vec)

    {

       if(vec!=Vector2.zero)

        {

            Move(vec.x, vec.y);

        }

    }

 

    private void Move(float h,float v)

    {

        if (h != 0 || v != 0)

        {

            //获取摇杆的方向

            Vector3 dir = new Vector3(h, 0, v);

            //把方向转换到相机的坐标系中

            dir =Camera.main.transform.TransformDirection(dir);

            //方向的y轴值始终设为0

            dir.y = 0;

            //把方向向量归一化

            dir.Normalize();

            //指定一个4倍的向量

            Vector3 sp = dir * 4;

            //控制模型的朝向

            this.transform.LookAt(sp + this.transform.forward);

            //用角色控制器控制移动

            chController.Move(dir * moveSpeed *Time.deltaTime);

        }

    }

}

    要用Button控制角色的跳跃怎么做呢?第一步,先在Start里面把Button根据名字获取到,第二步给Button绑定一个跳跃的方法,第三步,实现跳跃的逻辑。实现之后的脚本如下。

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class PlayerController :MonoBehaviour {

    //定义角色控制器组件

    private CharacterController chController;

    //定义角色移动的方向

    private Vector3 direction = Vector3.zero;

    //定义视距

    public const float sightDistance = 4;

    //定义移动速度

    public float moveSpeed=5;

    //定义重力加速度

    private float gravity = 9.8f;

    //定义摇杆组件

    private ETCJoystick moveJoystic;

    //定义Button组件

    private ETCButton jumpBtn;

    //是否跳跃

    private bool isJump=false;

    void Start () {

        //获取角色控制器组件

        chController =this.GetComponent<CharacterController>();

        //获取指定摇杆,ETCInput.GetControlJoystick(摇杆名字);

        //注意获取指定摇杆和Button的方法,不要放在Awake里面,必须在Start里面,

        //因为放在Awake里面的时候会报null的错,可能跟它底部逻辑顺序有关吧!

        moveJoystic =ETCInput.GetControlJoystick("moveJoystick");

        //给摇杆绑定方法,通过如下方式,方法参数必须是Vector2

        moveJoystic.onMove.AddListener(OnMove);

        //根据Button的名字获取指定Button

        jumpBtn =ETCInput.GetControlButton("jumpBtn");

        //给Button绑定指定的方法

        jumpBtn.onDown.AddListener(Jump);

}

    //跳跃方法

    private void Jump()

    {

        isJump =true;

        if (isJump)

        {

            //用角色控制器控制角色向上移动

            chController.Move(Vector3.up * gravity);

            //升空之后给一个重力加速度

            this.transform.position += Vector3.down *Time.deltaTime * gravity;

            //如果落地,isJump设为false

            if (chController.isGrounded)

            { isJump =false; }

        }

    }

 

    //摇杆绑定方法

    private void OnMove(Vector2 vec)

    {

       if(vec!=Vector2.zero)

        {

            Move(vec.x, vec.y);

        }

    }

 

    //移动方法

    private void Move(float h,float v)

    {

        if (h != 0 || v != 0)

        {

            //获取摇杆的方向

            Vector3 direction = new Vector3(h, 0, v);

            //把方向转换到相机的坐标系中

            direction =Camera.main.transform.TransformDirection(direction);

            //方向的y轴值始终设为0

            direction.y = 0;

            //把方向向量归一化

            direction.Normalize();

            //指定一个4倍的向量

            Vector3 sp = direction * sightDistance;

            //控制模型的朝向

            this.transform.LookAt(sp + this.transform.forward);

            //用角色控制器控制移动

            chController.Move(direction * moveSpeed *Time.deltaTime);

 

        }

       

    }

}

     总结一下:第一步,在EasyTouch Controls创建一个摇杆,起名为moveJoystick,第二步,在EasyTouch Controls创建一个Button,起名为jumpBtn,然后创建一个角色模型,把这个脚本添加到角色模型上,就可以通过摇杆和Button简单的控制角色的移动和跳跃了。

原创粉丝点击