代码改变世界

EasyTouch中虚拟摇杆的使用EasyJoystick

2015-07-11 16:09  糯米粥  阅读(3618)  评论(1编辑  收藏  举报

unity3d自带的虚拟摇杆显然没有EasyTouch好用

首先下载这个插件

http://pan.baidu.com/s/1hqJAbTa

下载完成后。导入到unity,可以看看里面的案例

 

找到这个可以自己看看效果

 

现在我们利用这个插件来做一个自己的虚拟摇杆

导入插件后。把EasyTouch导入到视图中,这里有C#和js两类。我选择C#

你会发现

 

右边的属性

一般默认就可以了

Enable EasyTouch:属性设置是否启用

接下来在项目中添加一个虚拟摇杆

Scene视图的左下角则多了一个摇杆

 

层次视图中也多了一个对象

来看看这个对象的一些主要属性

修改摇杆的名字。可以在代码中找到这个摇杆。

比如一个场景中有多个摇杆。可以通过摇杆判断是触发了那个

摇杆的位置设置。这个一看就知道。

 

摇杆的事件和贴图设置,

在场景中自己添加一个角色。给其添加脚本 MoveController.cs

using UnityEngine;
using System.Collections;

/// <summary>
/// 用来接收遥感事件控制角色的移动
/// </summary>
public class MoveController : MonoBehaviour
{
    Animator animator;
    public float speed = 5;//移动速度
    void Awake()
    {
        animator = GetComponent<Animator>();
    }

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    /// <summary>
    /// 脚本启用时触发 ,注册事件
    /// </summary>
    public void OnEnable()
    {
        EasyJoystick.On_JoystickMove += new EasyJoystick.JoystickMoveHandler(EasyJoystick_On_JoystickMove);
        EasyJoystick.On_JoystickMoveEnd += new EasyJoystick.JoystickMoveEndHandler(EasyJoystick_On_JoystickMoveEnd);
    }
    /// <summary>
    /// 移动摇杆结束
    /// </summary>
    /// <param name="move"></param>
    void EasyJoystick_On_JoystickMoveEnd(MovingJoystick move)
    {
        //停止时,角色恢复idle
        //Movejoystick 当前移动的摇杆名称。
        if (move.joystickName == "Movejoystick")
        {
            animator.SetBool("Run", false);
        }
    }
    /// <summary>
    /// 摇杆移动中
    /// </summary>
    /// <param name="move"></param>
    void EasyJoystick_On_JoystickMove(MovingJoystick move)
    {
        if (move.joystickName != "Movejoystick")
        {
            return;
        }

        //获取摇杆中心偏移坐标
        float joyPositionX = move.joystickAxis.x;
        float joyPositionY = move.joystickAxis.y;
        //开始移动
        if (joyPositionX != 0 || joyPositionY != 0)
        {
            //设置角色的朝向 (朝向当前坐标+摇杆偏移量)
            //Vector3 targetPos = new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY)
            //or
            Vector3 targetPos = transform.position + new Vector3(joyPositionX, 0, joyPositionY) * Time.deltaTime * speed;
            transform.LookAt(targetPos);

            //玩家移动
            //transform.Translate(Vector3.forward * targetPos);

            //利用刚体移动
            rigidbody.MovePosition(targetPos);

            //播放奔跑动画
            animator.SetBool("Run", true);
        }
    }


    /*
     Button Interaction&Events
     * 中勾选use specific method
     * Down method name:按下执行一次
     * Press method name:按下一直执行
     * Up method name:按下弹起执行一次
     */

    /// <summary>
    /// 按下执行该事件,只执行一次
    /// Down method name
    /// </summary>
    void Attack()
    {
        //播放攻击动画
        //animator.SetBool("Attack", true);
    }

    /// <summary>
    /// 按下一直触发该事件
    /// Press method name
    /// </summary>
    void PressAttack()
    {
        animator.SetBool("Attack", true);

    }
    /// <summary>
    /// 触摸或者鼠标弹起 执行该事件 只执行一次
    /// Up method name
    /// </summary>
    void StopAttack()
    {
        animator.SetBool("Attack", false);
    }
}

然后再添加一个杀怪的按钮

 

此时右下角会显示

 

属性都很简单

可以参考:

http://blog.csdn.net/dingxiaowei2013/article/details/19967041

http://blog.csdn.net/qinyuanpei/article/details/26204177?utm_source=tuicool