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 ...
随机推荐
- Python语法之函数、引用和装饰器
所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该 任务 ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- Mybatis(四)——
test https://www.cnblogs.com/chiaki/p/14529418.html
- Vuex的同步异步存值取值
1. vue中各个组件之间传值 1.父子组件 父组件-->子组件,通过子组件的自定义属性:props 子组件-->父组件,通过自定义事件:this.$emit('事件名',参数1,参数2, ...
- WEB漏洞——PHP反序列化
序列化 首先说说什么是序列化 序列化给我们传递对象提供了一种简单的方法.serialize()将一个对象转换成一个字符串,并且在转换的过程中可以保存当前变量的值 而反序列化unserialize()将 ...
- Linux RHCE7.0 笔记(常见符号)
1.无交互式创建用户 echo "password" | passwd --stdin username 2.Linux重定向符号 > :表示将符号左侧的内容,以覆盖的方式输 ...
- SpringBoot系列——附件管理:整合业务表单实现上传、回显、下载
前言 日常开发中,大多数项目都会涉及到附件上传.回显.下载等功能,本文记录封装通用附件管理模块,并与业务模块进行整合实现上传.回显.下载 我们之前已经对文件上传下载有过记录,传送门:基于"f ...
- 回忆之placeholder
直接看效果点这里 HTML <!DOCTYPE html> <html> <head lang="zh-CN"> <meta charse ...
- Redis限流
在电商开发过程中,我们很多地方需要做限流,有的是从Nginx上面做限流,有的是从代码层面限流等,这里我们就是从代码层面用Redis计数器做限流,这里我们用C#语言来编写,且用特性(过滤器,拦截器)的形 ...
- js中date类型的格式转化为yyyy-MM-dd HH:mm:ss的String类型
在vue中或其他框架中可以在Date的原型链中添加Format的方法,如ruoyi可以写在main.js中更好,如果写在utils还需要去导入包. 正常的js直接放到utils.js就好 Date.p ...