如何用easytouch插件控制角色移动

2015年01月14日 10:36 0 点赞 0 评论 更新于 2025-11-21 14:19

在Unity3D中,如何使用EasyTouch插件控制角色移动呢?实际上,EasyTouch插件是通过虚拟摇杆来实现角色移动控制的。下面我们将详细学习在Unity3D中使用EasyTouch虚拟摇杆控制角色移动的方法。

为什么选择EasyTouch插件

尽管Unity3D内置了一个Joystick组件(它由一个GUITexture和一个Js脚本文件组成),但在实际使用中,这个内置的Joystick存在无法适应屏幕大小的问题。因此,推荐使用EasyTouch插件。通过该插件,我们可以快速在应用中集成虚拟摇杆功能,还能通过改变贴图来自定义摇杆外观,总体而言,它是触摸交互功能方面非常出色的插件。

使用EasyTouch插件控制角色移动的步骤

1. 导入资源包并添加虚拟摇杆

首先,导入EasyTouch的资源包。然后,通过“ Hedgehog Team -> Extension -> Adding a new joystick”添加一个虚拟摇杆。此时,层级视图中会生成“EasyTouch”和“Easy Joystick”两个对象。添加完成后,在游戏场景中就能看到EasyTouch默认的虚拟摇杆外观。

2. 了解EasyJoystick的属性

接下来需要了解EasyJoystick的属性,不过文章中未详细展开这些属性的内容,大家可以在实际操作中进一步研究。

3. 编写控制脚本

如果对EasyJoystick的属性没有疑问,就可以开始编写脚本了。以下是具体的C#脚本代码:

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");
}
}
}

将这个脚本绑定到人物模型上,然后运行程序,就可以使用EasyTouch插件的虚拟摇杆控制角色移动了。

使用Unity3D自带的Joystick实现人物移动控制

下面介绍如何使用Unity3D自带的Joystick来实现人物移动控制。

1. 导入资源包并准备相关文件

首先,导入“Standard Assets (Mobile)”资源包。在这个资源包里可以找到两个有用的文件:“Joystick.js”和“JoystickThumb.psd”,它们分别是虚拟摇杆的脚本组件和外观贴图。

2. 创建并设置GUITexture

手动创建一个GUITexture,并将其调整到合适的位置。然后,将“JoystickThumb.psd”这张贴图赋给GUITexture,并绑定“Joystick.js”脚本。需要注意的是,在Unity中,Js脚本需要放到“Standard Assets”、“Pro Standard Assets”和“Plugins”中的任何一个文件夹里才能正常使用。很多朋友反映使用Unity内置的Joystick找不到类,就是因为这个原因。这里可以使用国外朋友根据官方脚本改写的C#脚本来响应虚拟摇杆。

3. 编写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却没有反应,具体原因还需要进一步研究。

综上所述,使用EasyTouch插件可以更方便地实现角色移动控制,避免了使用Unity内置Joystick时可能遇到的一些问题。

作者信息

feifeila

feifeila

共发布了 3994 篇文章