Unity 触控插件LeanTouch/LeanTouch+教程

这篇具有很好参考价值的文章主要介绍了Unity 触控插件LeanTouch/LeanTouch+教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

LeanTouch 和 LeanTouch+ 是针对移动触摸设备的输入解决方案。它们提供了一套简单易用的 API,用于处理移动设备上的触摸输入,并且支持各种手势,如拖动、缩放、旋转等。

主要特点和功能:

  1. 支持多平台: LeanTouch 和 LeanTouch+ 可以在 iOS、Android、Windows 和 macOS 等各种平台上使用。

  2. 简单易用: 这两个插件提供了简洁易懂的 API,使得开发者可以轻松地处理触摸输入,而不必自己编写复杂的代码。

  3. 支持多种手势: LeanTouch 和 LeanTouch+ 支持常见的手势,如单指触摸、双指缩放、双指旋转、双指拖动等。这些手势可以方便地用于游戏和应用程序的交互设计。

  4. 自定义灵活性: 这两个插件提供了丰富的配置选项,开发者可以根据自己的需求进行定制。比如可以调整触摸灵敏度、手势识别的阈值等。

  5. 支持物理交互: LeanTouch 和 LeanTouch+ 还支持物理交互,可以将触摸输入转换为物理力或运动,从而实现更加真实的交互效果。

  6. 文档和示例丰富: 它们都提供了详细的文档和示例,方便开发者学习和使用。同时还有社区支持,可以在社区中获取帮助和交流经验。

官方地址:Lean Touch | Input Management | Unity Asset Store

二、功能特点

LeanTouch 提供了丰富多样的手势控制功能,使开发者能够轻松实现各种交互效果。除了常见的单指触摸、双指缩放、旋转和拖动之外,它还支持多点触控,能够同时处理多个触摸点,从而实现更加丰富和灵活的用户操作体验。


在这里只简单介绍一下几种常见手势:

直接上代码!

using Lean.Touch;
using System.Collections.Generic;
using UnityEngine;

public class BasicLeanTouchLearn : MonoBehaviour
{
    /// <summary>
    /// 物体旋转处理
    /// </summary>
    protected LeanPitchYawChildren _pitchYawChildren;

    /// <summary>
    /// 处理手指移动
    /// </summary>
    private LeanFingerUpdate _fingerUpdate;

    /// <summary>
    /// 手指长按处理
    /// </summary>
    protected LeanFingerHeld _fingerHeld;
    protected LeanFingerTap _fingerTap;

    /// <summary>
    /// 风扇水平旋转
    /// </summary>
    [SerializeField] protected LeanPitchYawTargets _yawTarget;

    /// <summary>
    /// 风扇垂直旋转
    /// </summary>
    [SerializeField] protected LeanPitchYawTargets _pitchTarget;

    /// <summary>
    /// 拖动区域碰撞盒
    /// </summary>
    protected Collider _collider;

    protected void Awake()
    {
        _pitchYawChildren = GetComponent<LeanPitchYawChildren>();
        _fingerUpdate = GetComponent<LeanFingerUpdate>();
        _fingerHeld = GetComponent<LeanFingerHeld>();
        _fingerTap = GetComponent<LeanFingerTap>();
        _collider = _fingerHeld.RequiredSelectable.GetComponent<Collider>();
    }

    protected virtual void OnEnable()
    {
        AddListener();
    }

    public void AddListener()
    {
        //添加监听
        //移动时旋转
        _fingerUpdate.OnDelta.AddListener(Rotate);

        //手指按下时选中
        _fingerHeld.OnFingerDown.AddListener(OnFanSelected);

        //手指抬起时取消选中
        _fingerHeld.OnFingerUp.AddListener(OnFanDeselected);

        //手指点击
        _fingerTap.OnFinger.AddListener(HandleFingerTap);

        //物体上下角度修改回调
        _pitchTarget.OnPitchChange.AddListener(OnPitchChange);

        //物体左右角度修改回调
        _yawTarget.OnYawChanged.AddListener(OnYawChange);

        //手势控制
        LeanTouch.OnGesture += OnGesture;
    }

    /// <summary>
    /// 通过手指输入,控制角度
    /// </summary>
    /// <param name="delta"></param>
    protected virtual void Rotate(Vector2 delta)
    {
        _pitchYawChildren.Rotate(delta);
    }

    /// <summary>
    /// 被选中
    /// </summary>
    /// <param name="leanFinger"></param>
    protected void OnFanSelected(LeanFinger leanFinger)
    {
        Debug.Log($"OnFanSelected {JsonUtility.ToJson(leanFinger)}");
    }

    /// <summary>
    /// 取消选中
    /// </summary>
    /// <param name="leanFinger"></param>
    protected virtual void OnFanDeselected(LeanFinger leanFinger)
    {
        Debug.Log($"OnFanDeselected {JsonUtility.ToJson(leanFinger)}");
    }

    /// <summary>
    /// 上下角度修改回调
    /// </summary>
    /// <param name="pitch"></param>
    protected void OnPitchChange(float pitch)
    {
        //这里 Unity 里设定了旋转角度为-15到15之间,映射到0到100。
        var value = (int)RemapClamped(pitch, _pitchTarget.PitchMin, _pitchTarget.PitchMax, 0, 100);
        Debug.Log($"OnPitchChange value: {value}");
    }

    /// <summary>
    /// 左右角度修改回调
    /// </summary>
    /// <param name="yaw"></param>
    protected void OnYawChange(float yaw)
    {
        // 这里 Unity 里设定了旋转角度为-12到12之间,映射到0到100。
        var value = (int)RemapClamped(yaw, _yawTarget.YawMin, _yawTarget.YawMax, 0, 100);
        Debug.Log($"OnYawChange value: {value}");
    }

    /// <summary>
    /// 映射
    /// </summary>>
    public float RemapClamped(float aValue, float aIn1, float aIn2, float aOut1, float aOut2)
    {
        float t = (aValue - aIn1) / (aIn2 - aIn1);
        if (t > 1f)
            return aOut2;
        if (t < 0f)
            return aOut1;
        return aOut1 + (aOut2 - aOut1) * t;
    }

    /// <summary>
    /// 点击
    /// </summary>
    protected void HandleFingerTap(LeanFinger finger)
    {
        //获取点击次数
        Debug.Log($"FingerTap :{finger.TapCount}");
    }

    /// <summary>
    /// 手势控制
    /// </summary>
    /// <param name="fingers"></param>
    public void OnGesture(List<LeanFinger> fingers)
    {
        //如果为单手则返回
        if (fingers.Count <= 1) return;

        //捏合
        if (LeanGesture.GetPinchRatio(fingers) > 1.1f)
        {
            Debug.Log("Pinch Gesture");
        }
        //张开
        else if (LeanGesture.GetPinchRatio(fingers) < 0.9f)
        {
            Debug.Log("Open Gesture");
        }

    }
}

三、配置项

创建一个空物体,分层结构如下:

lean touch插件,unity,游戏引擎,游戏程序

为了实现触摸,可以使用 LeanSelectable By Finger 组件: 这是一种简单的方式,可以通过将该组件添加到游戏对象上来启用触摸交互。但这并不是必须的,适用于应用场景比较简单,不需要复杂的触摸操作。具体组件配置如下,Yaw负责触控和上下旋转:

lean touch插件,unity,游戏引擎,游戏程序

Pitch负责水平旋转,组件配置如下:

lean touch插件,unity,游戏引擎,游戏程序

在LeanFinger上挂载脚本,负责处理手势控制,如下图:

lean touch插件,unity,游戏引擎,游戏程序lean touch插件,unity,游戏引擎,游戏程序

到这里配置结束,就可以运行游戏进行相应手势操作了。

谢谢大家,有问题可以私信,看到了就会回复。文章来源地址https://www.toymoban.com/news/detail-851355.html

到了这里,关于Unity 触控插件LeanTouch/LeanTouch+教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月12日
    浏览(39)
  • [Unity教程]Unity战棋游戏教程

    1.效果演示 https://www.bilibili.com/video/BV1Vu4y1d7eY?p=1 2.GameApp和单例父类实现 GameApp和单例父类实现_哔哩哔哩_bilibili 3.SoundManager编写实现bgm播放 SoundManager编写实现bgm播放_哔哩哔哩_bilibili 4.修改鼠标样式 修改鼠标样式_哔哩哔哩_bilibili 5.MVC基本脚本实现 https://www.bilibili.com/video/BV1Vu4

    2024年02月04日
    浏览(35)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(四)

    目录 一、C插件开发最佳实践与常见问题解析 性能优化: 跨平台兼容性: 版本管理与升级: 二、结论 C语言在游戏引擎插件开发中的关键作用与优势: 对开发者提出建议: 性能优化: 内存管理: 智能指针 :利用UE的 TSharedPtr 、 TWeakPtr 等智能指针管理动态内存,确保资源释

    2024年04月27日
    浏览(52)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(一)

    目录 一、引言 C语言在游戏开发中的重要地位与优势 游戏引擎插件机制与C语言的价值 二、C语言基础与游戏开发特性 C语言核心特性及其在游戏开发中的应用 游戏引擎API对接关键概念与技巧 C语言在游戏开发领域占据着无可替代的重要地位,尤其在应对高性能计算需求与底层

    2024年04月29日
    浏览(68)
  • Unity 资源插件Color Studio -- 让你的游戏对象颜色更加出彩【限时免费】

    Color Studio 是一款功能强大的 Unity 编辑器扩展,它可以让您的游戏更加丰富多彩。它提供了各种工具,可以帮助您轻松创建吸引人的调色板,编辑纹理和精灵,以及对任何游戏对象(包括蒙皮对象和精灵)重新着色。使用 Color Studio,您可以利用颜色理论来创建看起来很棒的程

    2024年04月14日
    浏览(52)
  • Unity VR游戏教程

    Unity VR游戏教程 VR从初学者到专家!在 Unity​®​和 VR 中从头开始创建许多游戏! 课程英文名:Mastering Unity VR Games 此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源码附件全 下载地址 百度网盘地址:https://pan.baidu.com/s/1301-Ypy2oEP71O2eG1Eakg?pwd=hsgs 课程内容 你将会学到的

    2023年04月08日
    浏览(40)
  • 零基础小白如何自学 Unity 游戏开发?(送 Unity 教程)

    有很多同学对 游戏开发 很感兴趣,但都不知道从何学起,缺乏目的性,往往会走不少弯路,本文正是为了帮助大家少走弯路。 “游戏开发”看似只有四个字,但涉及的内容有很多,包括 UI、建模、绘画、动画系统、粒子系统、图形学、物理系统等等。内容多需要学习的知识

    2023年04月09日
    浏览(43)
  • 【Unity2022】Unity多人游戏开发教程-Netcode for GameObjects-使用命令行启动多人游戏

    首先亮出文档,可以直接去看官方文档。 本文章大部分内容来源于官方文档,另一部分为笔者讲解的教程。 如果英语不好,或看不懂文档的人,可以阅读本文章。 官方文档 官方文档的中文翻译: 中文翻译 本教程使用的开发环境如下: Windows10 Unity 2022.3.0f1c1 Netcode for GameOb

    2024年02月08日
    浏览(57)
  • unity 2d游戏开发教程(2d战棋)

    unity 2d 游戏开发教程(2d战棋) 类似的游戏有:火焰纹章,梦幻模拟战 素材下载地址: 人物 https://brullov.itch.io/generic-char-asset 场景 https://anokolisa.itch.io/sidescroller-pixelart-sprites-asset-pack-forest-16x16 场景2:https://anokolisa.itch.io/dungeon-crawler-pixel-art-asset-pack/devlog/447513/12th-road-map-for-pi

    2024年02月13日
    浏览(52)
  • 【Unity2022】Unity多人游戏开发教程-安装Netcode for GameObjects

    首先亮出文档,可以直接去看官方文档。 本文章大部分内容来源于官方文档,另一部分为笔者讲解的教程。 如果英语不好,或看不懂文档的人,可以阅读本文章。 官方文档 官方文档的中文翻译: 中文翻译 本教程使用的开发环境如下: Windows10 Unity 2022.3.0f1c1 Netcode for GameOb

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包