[unity3d]easytouch的使用

对于移动平台上的RPG类的游戏,我们常用虚拟摇杆来控制人物角色的行走和一些行为,相信我们对它并不陌生,之前尝试了EasyTouch2.5,发现并没有最新版的3.1好用,2.5版本的对于自适应没有做的很好,而最新版的已经解决了这一问题。当然unity也自带了摇杆Joystick,用起来也简单,但存在不少局限,不会满足普通mmo游戏的需求,比如指定显示区域或者是更改一些素材等等,而这些EasyTouch插件都已经帮你实现,不得不佩服插件的原作者,能做出这么炫酷好用的插件,当然这估计是老外开发的,关于插件的下载,你可以在AssetStore上购买,当然也可以使用free版。

我这里也提供一个3.1版本的插件下载地址:http://download.csdn.net/detail/s10141303/6962919

一、效果图

感觉很酷有木有!接下来就看一下创建的过程吧!

二、操作步骤

1.官方文档上的步骤

Quick Start (C#)

1-Import EasyTouch Package.
2-Create an empty gameObject, and name it EasyTouch.(You can choose another name)
Step 1 & 2 can be replace by the option menu


3-Add the EasyTouch.cs script on the EasyTouch gameObject that you just created. 
4-Select the EasyTouch gameobject, and verifies that Broadcast messages is set to FALSE in the inspector.


5-Create a new C# script MyFirstTouch
6-Add these methods

// Subscribe to events
void OnEnable(){
EasyTouch.On_TouchStart += On_TouchStart;
}
// Unsubscribe
void OnDisable(){
EasyTouch.On_TouchStart -= On_TouchStart;
}
// Unsubscribe
void OnDestroy(){
EasyTouch.On_TouchStart -= On_TouchStart;
}
// Touch start event
public void On_TouchStart(Gesture gesture){
Debug.Log( "Touch in " + gesture.position);
}

7-Create an empty gameObject, and name it Receiver.
8- Add MyFirstTouch script to the gameObject Receiver.
9- Run it in editor, and click on the screen

2.翻译一下以上的步骤

  1.import“EasyTouch”资源包

        2.创建空物体,命名为EasyTouch(当然你也可以改成其他名字)

        3.添加EasyTouch.cs脚本在刚刚创建的空物体(EasyTouch)上

4.选择改物体但不要将BroadcastMessages勾选

5.创建一个新的C#脚本,命名MyFirstTouch

6.添加这些方法

7.再创建一个空物体,命名为Receiver

8.将MyFirstTouch脚本添加到空物体Receiver上

9.运行并且点击遥感,会发现控制台打印了当前按下的坐标

3.根据官方的这些提示,自己来做一个属于自己的人物遥感控制

   1.导入EasyTouch3资源包

2.做好前期准备,包括人物模型、地形的创建

3.添加JoyStick实例:Hedgehog Team->Easy Touch->Extensions->Add a new Joystick。此时就会在左下角创建了虚拟遥感的实例。

        4.设置遥感的相关参数

5.创建脚本MoveController.cs用来接收遥感事件控制角色的移动

using UnityEngine;
using System.Collections;

public class MoveController : MonoBehaviour {

    void OnEnable()
    {
        EasyJoystick.On_JoystickMove += OnJoystickMove;
        EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
    }

    //移动摇杆结束
    void OnJoystickMoveEnd(MovingJoystick move)
    {
        //停止时,角色恢复idle
        if (move.joystickName == "MoveJoystick")
        {
            animation.CrossFade("idle");
        }
    }

    //移动摇杆中
    void OnJoystickMove(MovingJoystick move)
    {
        if (move.joystickName != "MoveJoystick")
        {
            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 * 5);
            //播放奔跑动画
            animation.CrossFade("run");
        }
    }
}

几个函数的执行顺序:

6.效果图

7.创建点击按钮

点击HedgehogTeam->EasyTouch->Extensions->Create a new Button,会在屏幕右下角创建一个button

如何让有下角的按钮点击能做出我们想要的效果呢?

jump方法:

然后点击一下按钮,人物就会跳跃动作!

如需转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/19967041

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:375151422         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

时间: 2024-07-30 13:03:49

[unity3d]easytouch的使用的相关文章

ios-Unide3d 导出的Xcode工程能不能查看unity3d里的脚本

问题描述 Unide3d 导出的Xcode工程能不能查看unity3d里的脚本 Unide3d导出了Xcode工程,能不能就在Xcode工程里查看哪些js文件,如果看不了那这些脚本是怎么在Xcode下运行的呢?求大神解答

unity3d-关于Unity3d WWW 加载本地资源的问题

问题描述 关于Unity3d WWW 加载本地资源的问题 WWW www = new WWW (""file://E:/项目/Assets/StreamingAssets/Actor.assetbundle"");WWW www = new WWW (""file:///E:/项目/Assets/StreamingAssets/Actor.assetbundle"");两种都试过都不行总是提示 You are trying t

Unity3D中暂停时的动画及粒子效果实现

暂停是游戏中经常出现的功能,而Unity3D中对于暂停的处理并不是很理想.一般的做法是将Time.timeScale设置为0.Unity的文档中对于这种情况有以下描述: The scale at which the time is passing. This can be used for slow motion effects-.When timeScale is set to zero the game is basically paused - timeScale表示游戏中时间流逝快慢的尺

在Win7上怎么样编译unity3d mono?

问题描述 在Win7上怎么样编译unity3d mono? 网络上有一些用Cgywin编译Unity3D mono的文章,但照着去做总是有一些各种各样的问题,很难成功编译,不知道谁有完整的方法. 解决方案 http://www.xuebuyuan.com/2060835.html

如何使用Sublime Text 2开发Unity3D项目

用 Sublime 已经有很长一段时间,很舒适,很贴心,根本停不下来.之前因为是开发页游,所以是用 AS3 开发,近段时间,新开了个手游项目,引擎方面选定了 Unity3D,老实说,之前没有太多的 3D 的概念,只是自己偶尔会下个 AS3 写的 3D 引擎玩一下,折腾折腾,并没有实际的工作中用到过相关的东西,如今项目需要用 Unity3D,有些兴奋,这可不是自己折腾的小打小闹了. Unity 支持的脚本有3种:C#, JS, Boo,我们这边是打算使用 C#,在使用语言的问题上并没有做太多的讨论

射线碰撞:Unity3D总结

方法一:Physics.Raycast 光线投射 1.static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool 一个静态的发射射线的方法,在场景中投下可与所有碰撞器碰撞的一条光线. 参数解释: origin:射线起始点 direction:射线方向 distanc

unity3d中的http通信简介

前言 Unity3d是一个跨平台的引擎,在移动互联网浪潮之中,尤其是移动游戏3d方向上,Unity3d 毫无疑问是最耀眼的明星.Unity3d的http通信很简单,也非常好用,下面通过http和php sever交互来简单介绍一下. http 提交数据原理 http 协议通过 url来获取和提交数据 .提交数据的方式 有两种,一种是get方法,一种是post方法.get一般用于告诉服务器把满足参数的数据发送给回来. 例如:get 的html代码如下: [html] view plaincopy

Unity3D如何连接Sqlite数据库

环境介绍: Windows7,Unity3D,SQLite Expert Personal 3 开发语言: JavaScript 需要的dll文件: Mono.Data.Sqlite.dll和sqlite3.dll,dll文件位置,截图: 一定要在这个目录下,请保持一致. 如果需要将编译好的程序发布成功的话,需要改一些地方,具体见下面的截图: 要改动的地方已用红色标记,注意这个要改成.NET2.0,这样才能够发布的.系统默认的不是.NET2.0,这一点要注意!!! 下面来看下代码吧,先看下如何创

Unity3D实现基于Socket通讯的公共聊天室

多个客户端一同使用就是一个简单的公共聊天室.服务端为一个控制台程序使用C#实现,当然,在Unity3D中也相应地使用了C#语言实现客户端,服务端和客户端能实现消息的互通,当服务端接收到某客户端发送过来的消息时将会对客户端列表成员进行广播,这是公共聊天室的最基本的形式.Socket通讯是网络游戏最为基础的知识,因此这个实例能向有志投身于网游行业的初学者提供指导意义. using System; using System.Collections.Generic; using System.Linq;