【Unity基础】对比Unity中碰撞类与触发类交互机制

碰撞类回调(Collision-based)和触发类回调(Trigger-based)是Unity中两种不同的物理交互机制。它们各自有不同的应用场景和使用方式,理解它们的区别有助于我们在游戏开发中选择合适的解决方案。下面是这两者的详细对比,涵盖它们的工作原理应用场景区别

1. 工作原理的区别:

碰撞类回调(Collision-based)
  • 碰撞体:碰撞类回调需要物体的碰撞体(Collider)与另一个物体的碰撞体发生物理碰撞,且通常需要附带刚体(Rigidbody)组件才能触发相关事件。
  • 物理反应:当物体碰撞时,物体会受到物理影响,如弹跳、反弹、停止等。
  • 回调方法
    • OnCollisionEnter(Collision collision):物体首次发生碰撞时触发。
    • OnCollisionStay(Collision collision):物体在碰撞过程中持续触发。
    • OnCollisionExit(Collision collision):物体与另一物体的碰撞结束时触发。
触发类回调(Trigger-based)
  • 触发器:触发类回调需要将碰撞体(Collider)设置为触发器(isTrigger = true)。此时,碰撞体不会与其他物体发生实际的物理碰撞,而是用于检测进入、停留或离开的区域。
  • 无物理反应:触发器不会引起物体的物理反应(如反弹、停止等),它仅仅用来检测物体是否在某个区域内。
  • 回调方法
    • OnTriggerEnter(Collider other):物体首次进入触发器区域时触发。
    • OnTriggerStay(Collider other):物体在触发器区域内持续停留时每帧调用。
    • OnTriggerExit(Collider other):物体离开触发器区域时触发。

2. 应用场景的区别:

碰撞类回调

碰撞类回调主要用于需要物理反应的场景,比如物体间的相互作用,或者碰撞对物体产生直接影响时。典型应用场景包括:

  • 物体之间的物理碰撞:例如玩家与敌人、玩家与墙壁的碰撞,反弹、阻止、击飞等物理反应。
  • 伤害判定:例如玩家与敌人发生碰撞时,触发伤害机制。
  • 物理交互:当物体碰撞时需要处理的物理效应,如物体的弹跳、停止、破碎等。
触发类回调

触发类回调适用于需要区域检测和事件触发的场景,尤其是当你不需要物理反应但仍然需要进行交互时。典型应用场景包括:

  • 区域控制:例如玩家进入某个特定区域(任务区域、敌人视野、陷阱区域等)时触发事件。
  • 物品拾取:玩家进入道具范围时触发捡取事件(如增加分数、恢复生命、触发动画等)。
  • 环境交互:例如玩家站在压力板上时,触发门的开关,或者玩家进入区域时触发持续效果(如减速、持续伤害等)。

3. 区别总结:

物理反应:
  • 碰撞类回调:会产生物理反应,物体发生实际的物理交互,如反弹、停止、摩擦等。
  • 触发类回调:不会产生物理反应,物体不会因进入或停留在触发器中而改变物理状态(比如不发生反弹、不会互相推挤等)。
使用场景:
  • 碰撞类回调:适合用于需要物理交互的场景,如玩家和敌人的碰撞、物体之间的推撞、物理反应(弹跳、碰撞破碎等)。
  • 触发类回调:适合用于区域监控和事件触发,尤其是在不需要物理效果时,如区域触发、物品拾取、任务触发、持续效果(如毒气、火焰伤害)等。
性能:
  • 碰撞类回调:因为涉及物理碰撞,可能会涉及较高的计算成本,尤其是在多个物体之间频繁发生碰撞时。
  • 触发类回调:通常比碰撞类回调更轻量,因为触发器不会引起物理反应,仅进行区域检测,适合处理区域检测和事件触发的场景,性能相对较好。
触发与碰撞的互动:
  • 碰撞类回调:通常需要碰撞体和刚体的配合。物体之间的碰撞会有物理反应,并触发相关的回调。
  • 触发类回调:触发器仅依赖碰撞体的存在和“触发器模式”,物体进入、停留或离开触发器区域时触发回调。触发器不会造成物理反应,因此常用于区域检测和事件管理。

4. 典型案例对比:

碰撞类回调:
  • 玩家与墙壁碰撞:当玩家碰到墙壁时,物体会停止移动,或者会有反弹效果。OnCollisionEnterOnCollisionStay 会根据碰撞的情况,可能触发伤害或者反弹效果。
  • 玩家与敌人碰撞:敌人和玩家发生碰撞时,可能会导致玩家生命值减少或敌人死亡,这类场景需要物理碰撞检测来触发事件。
触发类回调:
  • 玩家进入敌人视野:当玩家进入敌人的视野区域时,触发敌人追击或警报的事件。此时只需要通过触发器检测玩家进入视野区域即可,不涉及物理反应。
  • 玩家拾取物品:玩家靠近并进入道具的触发范围时,触发拾取事件,如增加分数或恢复生命等。此时仅通过触发器检测物体进入区域,物理反应不会被触发。

5. 选择使用的建议:

  • 使用碰撞类回调:当你需要处理物体之间的物理反应时,如反弹、伤害、弹跳等,应该使用碰撞类回调。
  • 使用触发类回调:当你只关心物体进入、停留或离开某个区域的事件,而不需要处理物理反应时,应该使用触发类回调。触发器非常适合用于区域触发、物品拾取、任务启动等。

总之,碰撞类回调更多涉及物理交互和碰撞后的物理反应,而触发类回调则更侧重于检测区域进入、停留或离开事件,且不涉及物理交互。这两者结合使用可以帮助开发者更灵活地处理游戏中的各种交互和效果。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VASA-1: Lifelike Audio-Driven Talking Faces Generated in Real Time

TL;DR 2024 年微软发表的数字人工作 VASA-1,支持基于单人头像照片和语音音频输入,来实时生成数字人视频。支持在线生成高达 40 FPS 的 512512 分辨率视频,目前为数不多能做到实时推理且效果很好的 talking face 工作。 Paper name VASA-1:…

【Ubuntu24.04】服务部署(基础)

目录 0 背景1 设置静态IP2 连接服务器3 部署服务3.1 安装JDK3.2 下载并安装MySQL8.43.2.1 从官网下载 APT Repository 配置文件3.2.2 安装 MySQL8.43.2.3 配置远程连接 3.3 下载并配置Redis3.4 上传jar包并部署应用3.5 开放端口 4 总结 0 背景 在成功安装了Ubuntu24.04操作系统…

[Java]Properties类加载配置文件

在我JDBC的文章末尾展示了完整的JDBC使用流程。但那种方式有一个问题,如果项目需要更换数据库,或者这个项目本来就是要使用多种数据库,那么像这种把信息写死在代码里边的编写模式,是肯定不行的。实际开发中肯定不会使用这种把信息…

STM32CUBEIDE的使用【五】TFT_LCD

硬件平台: 正点原子潘多拉开发板 STM32L475 软件平台: STM3232CubeMX 、STM32CUBEIDE 屏幕尺寸为1.3寸 分辨率240*240 16位真彩色 使用SPI接口驱动TFT_LCD 用来显示ASCII 字符图像和彩色功能 CubeMX配置 Source Code 创建app_lcd.c文件 #include &q…

Python数据分析NumPy和pandas(三十二、数据拆分-应用-合并)

最常用的 GroupBy 方法是 apply,apply 将正在操作的对象拆分为多个片段,在每个片段上调用传递给它函数,然后尝试连接这些片段。 还是用前面的小费数据集tips.csv,它的内容如下图: 假设我们想按smoker进行分组并选择前…

【毫米波雷达(九)】前雷达软件开发遇到的问题汇总及解决方法

前雷达软件开发遇到的问题汇总及解决方法 一、CAN/CANFD通信1、雷达CAN未能正常发出数据2、雷达在车上接收不到车身信息3、程序下载失败4、DV试验发送数据偶发断连5、发送感知信息丢帧或者丢报文6、上电发出第一帧的报文时间长7、ZCANPRO有错误帧二、协议转换(以太网…

linux 下调试 bmp280 气压传感器

供自己备忘; linux 下有自带的 bmp280 驱动,实际测试数据抖动不理想; 于是自己重写一个 bmp280 驱动,实际测试数据依旧抖动,不理想; 考虑使用 SPL06 来测试看看效果; 1. 参考资料&#xff1…

『VUE』26. props实现子组件传递数据给父组件(详细图文注释)

目录 本节内容示例代码总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 本节内容 父组件传子组件–props 子组件传父组件–自定义事件 本节讲子组件传父组件–通过props里的方法传递,就是父亲写了一个函数,给子组件调用,然后…

Linux编辑/etc/fstab文件不当,不使用快照;进入救援模式

目录 红帽镜像9救援模式 现象 解决 第一步:修改启动参数以进入救援模式 第二步:进入救援模式、获取root权限、编辑/etc/fstab文件 第三步:编辑好后在重启 下面是ai给的模板 红帽镜像9救援模式 编辑/etc/fstab不当时 17 /dev/nvme0n3p1…

异地情侣远程玩游戏?GameViewer远程串流轻松实现!

情侣之间偶尔想远程玩游戏增进感情却苦于找不到合适的软件?想要寻找一款低门槛好上手操作便捷的串流软件 ? 在这里向你推荐 网易GameViewer远程 ! GameViewer是专为游戏玩家的设计远程控制软件,可以帮助异地情侣实现这一需求。它让…

1990-2020年中国人工林和天然林空间分布数据集

数据介绍 植树已被认为是减缓气候变化的潜在有效解决方案。自上世纪70年代以来,中国实施了世界上最大的造林和再造林工程,但中国人工林的高分辨率地图仍然无法获得。在这项研究中,我们探索了使用多源遥感图像和众包样本来制作第一张高分辨率…

[Docker#10] network | 架构 | CRUD | 5种常见网络类型 (实验)

目录 1. Docker 为什么需要网络管理 2. Docker 网络架构简介 CNM(Container Network Model) Libnetwork 驱动 3. ⭕常见网络类型(5 种) 4. Docker 网络管理命令 一. bridge 网络 1. 操作案例:容器间网络通信 …

Spring Cloud Gateway快速入门Demo

1.什么是Spring Cloud Gateway? Spring Cloud Gateway 是一个基于 Spring Framework 和 Spring Boot 构建的 API 网关服务。它提供了一种简单而有效的方式来路由请求、提供跨领域的关注点(如安全、监控/指标和弹性)以及其他功能。Spring Clo…

【AI换脸整合包及教程】Rope:AI 换脸工具的功能、原理、应用

在人工智能技术迅猛发展的当下,AI 换脸技术无疑是近年来备受瞩目的焦点之一。其中,Rope 作为一款开源的 AI 换脸工具,因其出色的易用性和强大的功能而广受青睐。本文将对 Rope 的功能、技术原理、应用场景以及所面临的法律和伦理问题进行详细…

Yocto项目 - VIRTUAL-RUNTIME,它有什么用?

Yocto 项目是一个完整的 Linux 分布构建工具集,提供了构建完全自定义小型核心或完整应用的能力。在这样一个构建系统中,VIRTUAL-RUNTIME这个概念是应用构建和选择处理中的重要部分。这篇文章将从概念、优势、应用场景和实战案例几个方面,全面…

BB1-NHS ester被用于将各种生物活性分子与蛋白质或其他生物大分子进行共轭连接,2082771-52-4

CAS号:2082771-52-4 中文名:BB1-琥珀酰亚胺酯,BB1-活性酯 英文名:BB1-NHS ester,或BB1-Succinimidyl Ester 分子式:C32H32N6O4 分子量:564.63 纯度:≥95% 供应商:陕…

初级数据结构——栈

目录 前言一、栈的基本概念二、栈的实现方式三、栈的性能分析四、栈的应用场景五、栈的变体六、出栈入栈的动态图解七、代码模版八、总结结语 前言 数据结构栈(Stack)是一种线性的数据结构,它只允许在序列的一端(称为栈顶&#x…

Jdbc学习笔记(四)--PreparedStatement对象、sql攻击(安全问题)

目录 (一)使用PreparedStatement对象的原因: 使用Statement对象编写sql语句会遇到的问题 ​编辑 (二)sql攻击 1.什么是sql攻击 2.演示sql攻击 (三)防止SQL攻击 1.PreparedStatement是什么 …

前端开发必备!2024年最全工具和框架资源大汇总

在前端开发的过程中,我们会使用各种工具、框架和库来提升开发效率和用户体验。随着技术的不断发展,前端生态系统逐渐丰富,开发者面临着越来越多的选择。本文将分享一些常见的前端资源,帮助开发者根据项目需求选择合适的工具。 1.…

备份可以起到什么作用?

在数字化时代,数据已经成为企业最宝贵的资产。然而,数据丢失和系统故障可能给企业带来巨大的损失。华为云备份服务作为一款全面的数据保护解决方案,致力于帮助企业保障数据安全,确保业务的连续性。九河云来给大家说一下华为云备份…