Unity——EasyTouch摇杆插件使用
EasyTouch摇杆插件使用
Demo展示
双指缩放在电脑端无法掩饰,竖屏将就看看吧;
插件名叫EasyTouch,有需要给我留言,不想开仓库传了;
创建摇杆点这里:
初始化
On_JoystickMove这个回调是用来控制移动的;分两个方向,x和y轴;
void OnEnable()
{
EasyJoystick.On_JoystickMove += OnJoystickMove;
}
private void OnDisable()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
}
private void OnDestroy()
{
EasyJoystick.On_JoystickMove -= OnJoystickMove;
}
自定义On_JoystickMove
我的摇杆物体名称叫做MoveControl;
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != "MoveControl")
{
return;
}
float PositionX = move.joystickAxis.x; //获取摇杆偏移摇杆中心的x坐标
float PositionY = move.joystickAxis.y; //获取摇杆偏移摇杆中心的y坐标
Vector2 value = move.joystickValue;
if (PositionY != 0 || PositionX != 0)
{
//设置控制角色或物体方块的朝向(当前坐标+摇杆偏移量)
//transform.LookAt(new Vector3(transform.position.x + PositionX, transform.position.y,transform.position.z + PositionY));
//移动角色或物体的位置(按其所朝向的位置移动)
Vector3 dir = new Vector3(PositionX, PositionY, 0);
transform.Translate(dir * Time.deltaTime * speed);
}
}
这两个物体控制摇杆,EasyTouch一定不能删除;
手势功能
这套插件还支持双指缩放,滑动,手指画圈,点击,多指触碰,拖拽等;
具体api看注释:
public class Zoom : MonoBehaviour
{
bool isStart = false;
public Button BtnReset;
public Button BtnLoadScene;
public Text log;
void OnEnable() {
EasyTouch.On_Swipe += On_Swipe;
EasyTouch.On_Drag += On_Drag;
EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;
EasyTouch.On_PinchEnd += On_PinchEnd;
EasyTouch.On_PinchIn += On_PinchIn;
EasyTouch.On_PinchOut += On_PinchOut;
BtnReset.onClick.AddListener(ResetScene);
BtnLoadScene.onClick.AddListener(OnLoadScene);
}
void OnDisable() {
EasyTouch.On_Swipe -= On_Swipe;
EasyTouch.On_Drag -= On_Drag;
EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
EasyTouch.On_PinchEnd -= On_PinchEnd;
EasyTouch.On_PinchIn -= On_PinchIn;
EasyTouch.On_PinchOut -= On_PinchOut;
BtnReset.onClick.RemoveListener(ResetScene);
}
void OnDestroy() {
EasyTouch.On_Swipe -= On_Swipe;
EasyTouch.On_Drag -= On_Drag;
EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
EasyTouch.On_PinchEnd -= On_PinchEnd;
EasyTouch.On_PinchIn -= On_PinchIn;
EasyTouch.On_PinchOut -= On_PinchOut;
BtnReset.onClick.RemoveListener(ResetScene);
}
/// <summary>
/// 重置cube和相机
/// </summary>
void ResetScene() {
transform.position = Vector3.zero;
transform.rotation = Quaternion.Euler(Vector3.zero);
Camera.main.transform.position = new Vector3(0, 0, -10);
}
/// <summary>
/// 滑动使cube旋转
/// </summary>
/// <param name="ges"></param>
void On_Swipe(Gesture ges) {
Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);
transform.Rotate(vec ,Space.World);
log.text = "滑动使cube旋转";
}
/// <summary>
/// 拖拽移动cube
/// </summary>
/// <param name="ges"></param>
void On_Drag(Gesture ges) {
if (ges.pickObject == gameObject) {
transform.position = ges.GetTouchToWordlPoint(10);//相机z=-10 cube 0
log.text = "拖拽移动cube";
}
}
/// <summary>
/// 双指滑动 平面移动相机
/// </summary>
/// <param name="ges"></param>
void On_Swipe2Fingers(Gesture ges)
{
Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x*Time.deltaTime*25,
-ges.deltaPosition.y*Time.deltaTime*25, 0));
log.text = "双指滑动移动相机";
}
/// <summary>
/// 拉近拉远相机
/// </summary>
/// <param name="ges"></param>
private void On_PinchIn(Gesture gesture){
if (gesture.pickObject == gameObject){
float zoom = Time.deltaTime * gesture.deltaPinch;
isStart = true;
Vector3 scale = transform.localScale ;
transform.localScale = new Vector3( scale.x - zoom, scale.y -zoom, scale.z-zoom);
}
}
private void On_PinchOut(Gesture gesture){
if (gesture.pickObject == gameObject){
float zoom = Time.deltaTime * gesture.deltaPinch;
isStart = true;
Vector3 scale = transform.localScale ;
transform.localScale = new Vector3( scale.x + zoom, scale.y +zoom,scale.z+zoom);
}
}
private void On_PinchEnd(Gesture gesture){
if(isStart ){
if (gesture.pickObject == gameObject){
print ("End");
}
}
}
void OnLoadScene()
{
SceneManager.LoadScene("TestJoyStick");
}
}
Unity——EasyTouch摇杆插件使用的更多相关文章
- Unity时钟定时器插件
Unity时钟定时器插件 http://dsqiu.iteye.com/blog/2020603https://github.com/joserocha3/KillerCircles/blob/67a ...
- Unity的NGUI插件篇——入场效果
Unity的NGUI插件篇--入场效果 入场效果 入场效果须要借助于NGUI提供的TweenPosition类来完毕.为了说明此类的用法.本节将使会解说两个演示样例.本文选自 大学霸 <NGU ...
- 记录一个Unity播放器插件的开发
背景 公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下: Unity视频插件调研 网上搜了搜,最流行的有以下两 ...
- Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件),可以兼容VRTK
Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件) 可以兼容V ...
- Unity时钟定时器插件——Vision Timer源码分析之二
Unity时钟定时器插件——Vision Timer源码分析之二 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面的已经介绍了vp_T ...
- Unity 小地图制作插件NJG MiniMap的简单使用
unity版本:4.5.1 NJG MiniMap版本:1.5 参考链接:http://blog.csdn.net/wuming22222/article/details/37526659,作者:CS ...
- Unity 调用android插件
1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...
- unity 编辑器和插件生产(四.2)
上次 我们告诉编辑器制作,如何将图像加载到现场,如今 我们要告诉下.怎么样 制造UIButton以及UIimage交换. 阿土. 进入专题. 首先,我们要明白 unity机制.button属性等. 首 ...
- Unity 虚拟摇杆的实现
一般地,虚拟摇杆是放在UI层的. 所以先在Canvas建立一个空对象(这里被命名成MoveController),再在空对象里面放一个作为摇杆图片的Image. 然后通过覆盖重写UnityEngine ...
随机推荐
- 最长回文子序列---DP
问题描述 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 解题思路 1.说明 首先要弄清楚回文子串和回文子序列的区别,如果一个字符串是"bbbab", ...
- 一、Git分布式版本控制系统
1.引入 在开发一个软件项目时,本地只有几十行代码或几百行代码时还可以维护,但当代码达到一定的数量后或两三个人共同开发一个项目时,就很容易会出现代码混乱.冲突.排错难等问题.一旦开发完工以后发现整个项 ...
- PyQt5 笔记
一.简介 pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法.这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS.pyqt5是 ...
- Docker 面试宝典
Docker 是什么? 是实现容器技术的一种工具 是一个开源的应用容器引擎 使用 C/S 架构模式,通过远程API 来管理 可以打包一个应用及依赖包到一个轻量级.可移植的容器中 容器是什么? 对应用软 ...
- Linux 内核:匠心独运之无锁环形队列kfifo
Linux 内核:匠心独运之无锁环形队列 Kernel version Linux 2.6.12 Author Toney Email vip_13031075266@163.com Da ...
- 第09课:GDB 实用调试技巧(下)
本节课的核心内容: 多线程下禁止线程切换 条件断点 使用 GDB 调试多进程程序 多线程下禁止线程切换 假设现在有 5 个线程,除了主线程,工作线程都是下面这样的一个函数: void thread_p ...
- Java基础之代理模式
代理模式是常见的设计模式之一,意图在为指定对象提供一种代理以控制对这个对象的访问.Java中的代理分为动态代理和静态代理,动态代理在Java中的应用比较广泛,比如Spring的AOP实现.远程RPC调 ...
- JAVA反序列化漏洞基础原理
JAVA反序列化漏洞基础原理 1.1 什么是序列化和反序列化? Java序列化是指把Java对象转换为字节序列的过程: Java反序列化是指把字节序列恢复为Java对象的过程: 1.2 为什么要序列化 ...
- reeswitch http https ws wss nginx domain default port config
现代H5浏览器产业链越来越丰富,http+websocket+webrtc+sip组合已经是一种非常成熟的web原生音视频通讯解决方案 FreeSWITCH是一个开源的电话软交换平台,早在SIP年代就 ...
- 关于软链接ln -s 的使用
1.效果跟windows创建快捷方式是一样的,先找到要被创建的原始文件或目录.然后才能创建. 2.格式:ln -s [源文件或目录] [目标文件或目录] 3.源文件或目录必须是绝对目录. 4 ...