EasyTouch5 之 Joystick 虚拟摇杆
一.EasyTouch 资源结构
EasyTouchBundle [插件的根目录]
|—EasyTouch [插件核心,核心功能的实现,偏向底层]
|—EasyTouchControls [插件控制器,高级功能效果,偏向具体应用]
|—Install [PlayMaker 可视化开发环境的支持库]
|—Readme.txt [插件的版本更新信息]
二.Joystick虚拟摇杆
1.Joystick 介绍
Joystick:操纵杆,虚拟摇杆;EasyTouch 插件中最关键最核心的一个功能。
2.创建Joystick 游戏物体
Hierarchy 右键–> EasyTouch Controls –> Joystick
点击创建Joystick 游戏物体后,EasyTouch 会自动创建一个UGUI 的渲染环境,另外场景中还会出现一个InputManager 游戏物体。
3.Joystick 组成分析
ECTJoystick Image [ 虚拟摇杆功能组件,虚拟摇杆的背景图]
|—- Image [ 虚拟摇杆的操纵钮]
ECTJoystick 位置:EasyTouchControls/Plugins/ETCJoystick.cs
三.Joystick组件属性
1.基本属性
JoystickName:虚拟摇杆游戏物体的名字;
Activated:虚拟摇杆是否激活可用;
Visible:虚拟摇杆是否可见;
UseFixedUpdate:使用FixedUpdate 函数更新摇杆信息;
Unregister at disabling time:注销时禁用虚拟摇杆;
2.Position&Size [位置和大小]
这一组属性用于控制Joystick 的位置和大小,Joystick 的锚点定位不需要操作RectTransform 组件,而是控制该区域的属性。
3.Axes Properties [轴向属性]
虚拟摇杆本质还是键盘上的WASD 方向键的原理,两个轴向的数据获取。
该属性区域就是控制横轴,纵轴相关细节属性的;一般情况下保持默认即可。
4.Sprites [摇杆图片]
用于选择Joystick 所需要使用到的图片资源,该区域的修改,会直接影响Image组件上的图片属性。
四.Joystick 组件事件绑定
1.Move Events [移动事件]
OnMoveStart,OnMove,OnMoveSpeed,OnMoveEnd
在移动虚拟摇杆操纵钮的时候,在移动过程中逐步触发对应的事件。
2.Touch Events [触摸事件]
OnTouchStart,OnTouchUp
操纵钮的开始操作和操作结束,各执行一次事件。
3.Down Events [方向事件]
OnDownUp,OnDownRight,OnDownDown,OnDownLeft
当我们按下虚拟摇杆操纵钮移动到上下左右最终位置时,触发一次。
4.Press Events [按下事件]
OnPressUp,OnPressRight,OnPressDown,OnPressLeft
当我们按下虚拟摇杆操纵钮移动到上下左右最终位置时,则会一直触发。
五.Joystick 控制移动
1.Joystick 控制普通模型移动
使用Joystick 组件身上“onMoveSpeed(Vecot2)”事件来获取轴向的值:
测试:Joystick 默认两个轴向的取值范围。
①:Transform 组件位移
使用Transform 组件的Translate(向量)方法来实现位移。
②:Rigidbody 组件位移
使用Rigidbody 组件的MovePosition(当前位置+ 向量)方法来实现位移。
2.Joystick 控制人形动画
①使用onMoveStart 和onMoveEnd 控制动画的播放与停止;
②使用onMoveSpeed 控制角色控制器的位移。
六.RTC Joystick脚本:
1.基础属性:
1)Joystick name:摇杆名称只能在脚本的公共属性中修改,不可以在Hierarchy视图中修改
2)Activated:当前摇杆是否可用
3)Visible:在没有点击屏幕的时候是否显示摇杆
4)UseFixedUpdate:是否使用固定时间间隔刷新
5)UnregisterAtDisablingTime:在不使用摇杆的时候取消注册事件(字面翻译,目前自己还没有测试过)
2.Position&&Size
1)Type:Static静态摇杆
Anchor锚点:下拉枚举可以选择锚点位置
NoOffsetThumb(不知道有什么用)
NoReturnOfTheThumb:移动摇杆之后不会回弹
2)Type:Dynamic动态摇杆
AllowOverTouchpad:是否允许覆盖触摸板
JoystickArea:选择摇杆触发区域
3)BackgroundSize:背景图的大小
4)ThumbSize:摇杆大小
5)RadiusBaseOn:当背景图片不是正圆形或者正方形的时候选择摇杆边界水平或者垂直
3.AxesProperties
1)EnableUnityAxes:允许使用unity的轴向,关闭和打开并没有太大区别(目前功能不明)
2)Turn&MoveDirectionAction:游戏物体相对于摇杆位置向正前方移动
AutoLinkOnTag:是否使用标签自动连接物体(默认选择Player)
DirectActionTo:方向触发作用的物体
MoveCurve:移动曲线,时间可在专门的窗口中调整已适应不同的需求
MoveSpeed:移动速度
IntialRotation:初始旋转值,也就是每次使用摇杆旋转的时候初始的旋转角度
LockInJump:锁定跳跃(目前功能不明)
Gravity:重力(目前功能不明)
3)HorizontalAxis&VerticalAxis:设置水平或者垂直轴是否可用
a)勾选Turn&MoveDirectionAction时:
GeneralSetting:通用设置
ReactOn:press为按住响应,Down为按下去响应
DeadZoneMethod:摇杆的最小响应值,classical为固定值,curve为曲线值
InvertedAxis:轴向反转
On/OffThreshold:主要为Up,Right,Down,Left的回调触发临界值
UnityAxes:对应unity的轴向
b)当不勾选Turn&MoveDirectionAction时多出来两个选项:
DirectionAction:方向响应
AutoLinkOnTag:同上
DirectActionTo:同上
Action:选择作用物体的具体响应方式
AffectedAxis:作用轴
GravityInertiaSmoothing:初始重力惯性值
Gravity:初始重力值
Inertia:惯性大小
Threshold:摇杆临界值
4.Camera
勾选EnableTracking打开相机追踪
1)AutoLinkOnTag:同上(默认选择主摄像机)
2)TargetMode:可以选择tag标签,也可以自己选择
3)CameraMide:Follow跟随模式第三人称,smoothFollow平滑跟随模式第一人称(该模式还没有深入研究)
4)Offset:x,y,z分别代表各个位置上的偏移量
5.Sprites
修改摇杆背景图和摇杆图
6.MoveEvents
1)OnMoveStart():移动摇杆触发,在松开摇杆之后再次移动会再次触发
2)OnMove():移动摇杆后持续触发,vector2值在(-1,1)之间,并将把该值传入到方法当中
3)OnMoveSpeed():至今没有搞懂
4)OnMoveEnd():松开摇杆触发
Cube方块和三维角色使用Joystick 移动代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerJoystick : MonoBehaviour {
private ETCJoystick m_Joystick;
//CUBE方块.
private Transform cube_Transform;
private Rigidbody cube_Rigidbody;
//MODEL带动画的角色模型.
private Animator m_Animator;
private CharacterController m_CC;
private Transform m_Transform;
void Start(){
m_Joystick = gameObject.GetComponent();
cube_Transform = GameObject.Find("Player").GetComponent();
cube_Rigidbody = GameObject.Find("Player").GetComponent();
m_Animator = GameObject.Find("RoyalKnight").GetComponent();
m_CC = GameObject.Find("RoyalKnight").GetComponent();
m_Transform = GameObject.Find("RoyalKnight").GetComponent();
m_Joystick.onMoveSpeed.AddListener(OnMoveSpeed);
m_Joystick.onMoveStart.AddListener(OnMoveStart);
m_Joystick.onMoveEnd.AddListener(OnMoveEnd);
}
private void OnMoveStart()
{
m_Animator.SetBool("walk",true);
}
private void OnMoveEnd()
{
m_Animator.SetBool("walk",false);
}
private void OnMoveSpeed(Vector2 v2)
{
Debug.Log(v2);
Vector3 dir = new Vector3(v2.x,0,v2.y)* 0.5f;
cube_Transform.Translate(dir);//Transform组件位移Cube.
cube_Rigidbody.MovePosition(cube_Transform.position + dir);//刚体组件位移Cube.
m_CC.SimpleMove(dir * 10);
m_Transform.LookAt(m_Transform.position + dir);
}
}
作者:Magic_Dong
链接:https://www.jianshu.com/p/035482d2e41a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
EasyTouch5 之 Joystick 虚拟摇杆相关推荐
- Easy Touch虚拟摇杆的用法
安装好Easy Touch插件之后直接在Hierarchy面板直接创建. 创建完成你就会看见一个EasyTouchControlsCanvas 这样就代表成功了 接下来就是如何用脚本控制虚拟摇杆如何控 ...
- Unity用UGUI做虚拟摇杆
一.首先点击UI创建两个Image,将Image的Source Image改成自己想要的Texture即可,然后在Canvas下创建一空物体,将两个Image放在空物体下作为他的子对象: 然后为可以拖 ...
- unity中的2D虚拟摇杆和3D虚拟摇杆
源代码链接https://github.com/hiramtan/HiJoystick_unity 如何使用 可以从此链接下载最新的unity package: 完成功能 2D虚拟摇杆 3D虚拟摇杆 ...
- 《Cocos Creator游戏实战》虚拟摇杆实现
虚拟摇杆实现 摇杆布局实现 摇杆功能实现 用摇杆控制主角 该功能已收录在Many Widgets插件中,使用Cocos Creator 3.x版本的小伙伴可以用该插件快速生成摇杆. 插件地址:http ...
- 自定义虚拟摇杆组件让你一劳永逸
最近在研究虚拟摇杆实现方式的时候,发现网上的教程的实现方式可移植性并不是特别好,于是我决定自己实现一个虚拟摇杆组件,保存到自己的组件库,方便以后用到的时候直接使用(关注公众号后台回复「虚拟摇杆组件」可 ...
- EasyTouch 学习之——ETCJoystick 虚拟摇杆
ETC Joystick 继承自 ETCBase类, 并且要实现 PointerEnterHandler IDragHandler, IBeginDragHander IPointerDownHan ...
- Unity中实现虚拟摇杆
一:效果演示 二:使用 --创建一个可操作的区域Joystick作为父物体,调整Joystick大小以控制可以操作的区域 --在可操作区域下创建摇杆背景Background --在摇杆背景下创建摇杆控 ...
- 【功能实现】手机游戏虚拟摇杆功能实现
[UNITY3D] 声明: 查API和根据自己的想法实现此功能.如果你喜欢我这个实现,希望你能有所收获,如果你能改进那就更棒了,但如果你想直接拿走,希望标明出处. 只需要把脚本交给画布下的空物体,自行 ...
- Unity实战篇:实现虚拟摇杆控制人物(Easy Touch 5.X插件)
先上一张效果图 1.先导入Easy Touch 5.X插件 https://download.csdn.net/download/qq_15020543/10718144 强烈建议大家去Unity 商 ...
最新文章
- web系统 手机app 能访问吗?_成都APP开发:原生APP开发与Web APP开发有什么区别呢?...
- Hive内置运算函数,自定义函数(UDF)和Transform
- Spring容器初始化实现V3 版本
- Python小白的数学建模课-A2.2021年数维杯C题(运动会优化比赛模式探索)探讨
- C# Socket简单例子(服务器与客户端通信)
- 《中国人工智能学会通讯》——9.6 哈希学习
- PHP (20140510)深入浅出 JavaScript 变量、作用域和内存 v 0.5
- Lack of free swap space on zabbix,增加swap空间
- PTA——堆中的路径
- java中this用法
- 数据可视化大屏能为物联网项目带来什么
- UML2.51边译边学-接口
- C++ 多态性 (polymorphism)
- 添加用户并赋予 root管理员权限
- vue+websocket+nodejs实现聊天室 - 消息已读未读
- NOIP 考后欢乐赛 T2 中国象棋
- python-九九乘法表(矩形)
- Java基础知识点面试题,安卓程序员必备hook技术之进阶篇
- asp连接 Oracle
- Fatal message conversion error; message rejected; it will be dropped or routed to
热门文章
- 使用git在项目中的一些经验
- throughput(吞吐量)
- MyBatis中的Mapper.xml文件解析
- 浅析HDMI、DP、雷电接口优缺点
- 饮冰三年-人工智能-Python-17Python基础之模块与包
- python循环体执行的次数与其他不同的是_下面的Python循环体的执行次数与其他不同的是()...
- matlab 儒略历 函数,儒略日(儒略日 在线计算器)
- horizon学习小结
- Android开发系列——实战篇5:自适应屏幕尺寸(超详细教程)
- xp路由器播放服务器无响应,巧用XP超级终端解决路由器故障