【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录

​编辑

1. 插件核心功能

1.1 基础变换操作

1.2 高级特性

2. 安装与配置

2.1 导入插件

2.2 配置控制器参数

2.3 为物体添加交互功能

3. 使用示例

3.1 基础操作演示

3.2 多选与批量操作

3.3 自定义光标与外观

4. 高级配置技巧

4.1 动态调整包围框控件尺寸

4.2 分层渲染控制

4.3 事件扩展

5. 常见问题解答

Q1:包围框未显示

Q2:光标未切换

Q3:缩放时宽高比未锁定

6. 结语

7.工具下载



1. 插件核心功能

1.1 基础变换操作

  • 移动:点击物体碰撞体(Collider2D)并拖拽,即可自由移动物体。

  • 缩放

    • 单轴缩放:拖拽包围框的边缘(Edge)可沿单个轴缩放。

    • 双轴缩放:拖拽包围框的角落(Corner)可同时在两个轴上缩放。

    • 保持宽高比:支持全局锁定宽高比,或通过快捷键临时锁定(如按住Shift键)。

  • 旋转:拖拽旋转控件(Rotation Gizmo)可自由旋转物体。

1.2 高级特性

  • 多选操作:支持同时选中多个物体进行统一移动(需启用Allow Multi Selection)。

  • 光标反馈:当鼠标悬停在交互区域(如角落、边缘、旋转控件)时,光标自动切换为预设图标。

  • 动态尺寸调整:包围框的控件(角落、边缘、旋转控件)会根据摄像机缩放(orthographicSize)自动调整屏幕显示尺寸。

  • 自定义外观:可修改包围框的颜色、图标及排序层级,适配不同美术风格。


2. 安装与配置

2.1 导入插件

  1. 将插件包导入Unity项目(通过Asset Store或手动导入)。

  2. 添加控制器预制体
    在场景中拖入 TransformInteractorController 预制体(位于 Package/Prefabs)。
    该控制器全局管理所有交互逻辑,必须存在于场景中。

2.2 配置控制器参数

打开 TransformInteractorController 组件的参数面板,关键配置如下:

参数分类关键参数
包围框外观Corner Color(角落颜色)、Line Color(边缘颜色)、Rotation Color(旋转控件颜色)
交互行为Allow Multi Selection(启用多选)、Allow Rotation(启用旋转)
光标设置Change Cursor(启用光标切换)、Move Cursor(移动光标图标)
摄像机与缩放Main Camera(绑定正交摄像机)、Adjust Size To Zoom(动态调整控件尺寸)
宽高比锁定Always Preserve Aspect Ratio(全局锁定)、Preserve Aspect Ratio On Key Hold(按键临时锁定)

2.3 为物体添加交互功能

  1. 添加组件:为需要交互的2D物体添加 TransformInteractor 脚本。

  2. 自动添加碰撞体:若物体没有 BoxCollider2D,插件会自动添加一个。调整碰撞体大小以匹配物体实际范围。

  3. 自定义包围框:通过修改 TransformInteractor 的 Collider Offset 和 Collider Size 调整交互区域。


3. 使用示例

3.1 基础操作演示

  1. 移动物体:点击物体碰撞体并拖拽。

  2. 缩放物体

    • 拖拽角落进行双轴缩放。

    • 拖拽边缘进行单轴缩放。

    • 按住 Aspect Ratio Keys(如Shift键)临时锁定宽高比。

  3. 旋转物体:拖拽旋转控件(默认位于包围框顶部)。

3.2 多选与批量操作

  1. 启用多选:在控制器中勾选 Allow Multi Selection

  2. 选择多个物体:按住 Multi Selection Keys(如Ctrl键)点击多个物体。

  3. 统一移动:拖拽任意选中物体,所有选中物体将同步移动。

3.3 自定义光标与外观

// 示例:通过代码动态修改光标图标(需提前导入纹理)
TransformInteractorController controller = FindObjectOfType<TransformInteractorController>();
controller.MoveCursor = YourCustomMoveCursorTexture;
controller.RotateCursor = YourCustomRotateCursorTexture;

4. 高级配置技巧

4.1 动态调整包围框控件尺寸

  1. 确保摄像机为 正交投影(Orthographic)。

  2. 在控制器中启用 Adjust Size To Zoom

  3. 设置 Default Corner Width/Height 等参数,控制控件的默认屏幕尺寸。

4.2 分层渲染控制

通过设置不同排序层级(Sorting Layer),避免控件与游戏物体重叠:

  • Corner Sorting Layer > Rotation Gizmo Sorting Layer > Line Sorting Layer

4.3 事件扩展

插件内置事件系统(需自行扩展):

TransformInteractor interactor = GetComponent<TransformInteractor>();
interactor.OnDragStart += () => { /* 拖拽开始逻辑 */ };
interactor.OnScale += (scale) => { /* 缩放中逻辑 */ };

5. 常见问题解答

Q1:包围框未显示

  • 确认 TransformInteractorController 预制体已添加到场景。

  • 检查物体的 TransformInteractor 脚本是否启用。

Q2:光标未切换

  • 在控制器中启用 Change Cursor

  • 确认 Default Cursor 和特定操作光标已正确赋值。

Q3:缩放时宽高比未锁定

  • 检查 Always Preserve Aspect Ratio 或 Preserve Aspect Ratio On Key Hold 是否启用。

  • 确认快捷键设置(Aspect Ratio Keys)是否冲突。


6. 结语

Runtime 2D Transform Interactor 是一款功能强大且高度可定制的2D交互插件,尤其适合编辑器工具、关卡设计或需要精细物体操作的2D游戏。通过灵活的配置和直观的操作,开发者可以显著减少编码时间,专注于核心玩法开发。立即尝试这款插件,提升你的开发效率!

7.工具下载

https://download.csdn.net/download/qq_37310110/90394947

【注:此博文为工具生成,内容未经校对,注意甄别】  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

alt+tab切换导致linux桌面卡死的急救方案

环境 debian12 gnome43.9 解决办法 观察状态栏&#xff0c;其实系统是没有完全死机的&#xff0c;而且gnome也可能没有完全死机。 1. alt f4 关闭桌面上的程序&#xff0c;因为这个方案是我刚刚看到的&#xff0c;所以不确定能不能用&#xff0c;比起重启系统&#xff0c;…

mac相关命令

显示和隐藏usr等隐藏文件文件 terminal输入: defaults write com.apple.Finder AppleShowAllFiles YESdefaults write com.apple.Finder AppleShowAllFiles NO让.bashrc每次启动shell自动生效 编辑vim ~/.bash_profile 文件, 加上 if [ -f ~/.bashrc ]; then. ~/.bashrc fi注…

Lineageos 22.1(Android 15)Launcer简单调整初始化配置

一、前言 Launcer的初始化配置主要在如下的xml文件夹下&#xff0c;默认读取的5x5 这里我们把device_profiles调整一下&#xff0c;然后新建一个default_workspace_my.xml作为我们自己的配置就行。 二、配置 注意Lineageos 的Launcer是在lineageos/packages/apps/Trebuchet…

排查JVM的一些命令

查看JVM相关信息的方法 环境&#xff1a; Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps&#xff0c;可以快速获取Java进程的PID&#xff08;进程标识符&#xff09;&#xff0c; …

DeepSeek 助力 Vue 开发:打造丝滑的瀑布流布局(Masonry Layout)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

解决弹窗中form表单中按下tab键不切换的问题

开发过程中碰到el-dialog中使用的form组件&#xff0c;按下键盘tab键不会切换到下一个&#xff0c;普通页面就正常切换。 解决办法 <ElInputref"newPWDInput"v-model"newPWD":clearable"true":maxlength"16":tabindex"2&quo…

封装一个vue3控制并行任务数量的组合式函数

一. 使用场景 使用环境&#xff1a; vue3 当需要处理多个异步任务时&#xff0c;想要控制并行异步任务的数量&#xff0c;不想所有任务同时执行导致产生性能上的问题&#xff0c; 比如当需要同时发起多个网络请求&#xff0c;但又不想一次性发出过多请求导致服务器压力过大或…

最新华为 HCIP-Datacom(H12-821)2025.2.20

最新 HCIP-Datacom&#xff08;H12-821&#xff09;&#xff0c;完整题库请扫描上方二维码访问。 如图所示为某OSPF网络&#xff0c;已知R1和R2已,成功建立邻接关系&#xff0c;现一工程师在R2上配置了图中命令。那么在R2上查看LSDB时&#xff0c;可能存在以下哪些LSA? A&…

MongoDB between ... and ... 操作

个人博客地址&#xff1a;​​​​​​​MongoDB between ... and ... 操作 | 一张假钞的真实世界 MongoDB中类似SQL的between and操作可以采用如下语法&#xff1a; db.collection.find( { field: { $gt: value1, $lt: value2 } } );

vue2和vue3的按需引入的详细对比通俗易懂

以下是 Vue2 与 Vue3 按需引入的对比详解&#xff0c;用最简单的语言和场景说明差异&#xff1a; 一、按需引入的本质 目标&#xff1a;只打包项目中实际用到的代码&#xff08;组件、API&#xff09;&#xff0c;减少最终文件体积。类比&#xff1a;去餐厅点餐&#xff0c;只…

bash+crontab充当半个守护进程的歪招

两个cpolar下的不同程序&#xff0c;都需要定时监测&#xff0c;以免程序没有再运行。有点类似半个守护进程吧。但是守护进程不会写&#xff0c;咋搞&#xff1f;就用这个办法临时当下守门员。这里主要为了备忘xpgrep -各类参数的用法。 #!/bin/bashif pgrep -fl "check_…

Web自动化之Selenium 超详细教程(python)

Selenium是一个开源的基于WebDriver实现的自动化测试工具。WebDriver提供了一套完整的API来控制浏览器&#xff0c;模拟用户的各种操作&#xff0c;如点击、输入文本、获取页面元素等。通过Selenium&#xff0c;我们可以编写自动化脚本&#xff0c;实现网页的自动化测试、数据采…

如何调用 DeepSeek API:详细教程与示例

目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例&#xff1a;调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…

基于flask+vue的租房信息可视化系统

✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息&#xff0c;完成数据清洗和结构化&#xff0c;存储到数据库中&#xff0c;搭建web系统对各个市区的租金、房源信息进行展示&#xff0c;根据各种条件对租金进行预测。 1、数据概览 ​ 将爬取到的数据进行展示&#xff…

磐维数据库双中心容灾流复制集群搭建

1. 架构 磐维数据库PanWeiDB V2.0.0基于gs_sdr工具&#xff0c;在不借助额外存储介质的情况下实现跨Region的异地容灾。提供流式容灾搭建&#xff0c;容灾升主&#xff0c;计划内主备切换&#xff0c;容灾解除、容灾状态监控等功能。 2. 部署双中心磐维集群 2.1. 主集群 角色…

wordpress企业官网建站的常用功能

WordPress 是一个功能强大的内容管理系统(CMS)&#xff0c;广泛用于企业官网的建设。以下是企业官网建站中常用的 WordPress 功能&#xff1a; 1. 页面管理 自定义页面模板&#xff1a;企业官网通常需要多种页面布局&#xff0c;如首页、关于我们、产品展示、联系我们等。Wor…

Linux应用之构建命令行解释器(bash进程)

目录 1.分析 2.打印输入提示符 3.读取并且处理输入字符串 4.创建子进程并切换 5.bash内部指令 6.完整代码 1.分析 当我们登录服务器的时候&#xff0c;命令行解释器就会自动加载出来。接下来我们就。在命令行中输入指令来达到我们想要的目的。 我们在命令行上输入的…

ETL工具: Kettle入门(示例从oracle到oracle的数据导入)

kettle介绍 ETL工具,用于对数据的抽取&#xff08;Extract), 转换(Transform),加载 (Load&#xff09; Kettle 是一种ETL工具, 现称为 Pentaho Data Integration (PDI) 特点:纯JAVA语言编写 官方学习文档 网站: https://docs.hitachivantara.com/r/en-us/pentaho-data-int…

DeepSeek VS ChatGPT-速度、准确性和成本

撰写本文时马斯克刚刚发布了聊天机器人Grok2&#xff0c;10万张算卡体现了马斯克的财大气粗。近年来&#xff0c;人工智能模型取得了长足的发展&#xff0c;每个模型都力求在速度、准确性和成本效率方面超越其他模型。在本文中&#xff0c;我将深入研究比较中美在AI的焦点模型上…

SQLMesh 系列教程7- 详解 seed 模型

SQLMesh 是一个强大的数据建模和管道管理工具&#xff0c;允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型&#xff0c;主要用于初始化和填充基础数据集。它通常包含静态数据&#xff0c;如参考数据和配置数据&#xff0c;旨在为后续的…