unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别

news2024/12/24 16:53:08

Unity中的OnCollisionEnterOnTriggerEnter两个函数在日常的开发中很常见但也容易混淆,下面说一说两者的区别。

请添加图片描述

碰撞器(Collider)与触发器(Trigger)的概念

碰撞器(Collider)和触发器(Trigger)都是Unity中用于检测物体之间交互的组件。它们的主要区别在于对物体之间交互的处理方式。

  • 碰撞器(Collider) 用于检测两个物体之间的碰撞。当两个物体进入彼此的碰撞边界时,它们会发生碰撞,此时会触发OnCollisionEnter函数。
  • 触发器(Trigger) 用于检测一个物体是否进入另一个物体的触发边界。当一个物体进入另一个物体的触发边界时,会触发OnTriggerEnter函数。

OnCollisionEnter与OnTriggerEnter的区别

  • 触发条件不同:OnCollisionEnter是在两个物体发生碰撞时触发,而OnTriggerEnter是在一个物体进入另一个物体的触发边界时触发。
    另外OnTriggerEnter需要在刚体中勾选Is Trigger选项。OnCollision则不需要。
    在这里插入图片描述

  • 处理方式不同:OnCollisionEnter通常用于实现物体的物理交互,如碰撞、弹跳等。而OnTriggerEnter通常用于实现一些特殊触发事件,如进入某个区域时触发特定行为。
    在这里插入图片描述

  • 参与对象数量不同:OnCollisionEnter只能处理两个物体之间的碰撞,而OnTriggerEnter可以处理一个物体进入多个物体的触发边界的情况。

  • 函数参数不同:OnCollisionEnter的参数是一个Collision对象,包含了与碰撞相关的信息,如参与碰撞的物体、碰撞点等。而OnTriggerEnter的参数是一个GameObject对象,表示触发该事件的物体。
    OnTriggerEnter(GameObject other)
    OnCollisionEnter(Collider other)

应用示例

通常游戏开发中,我们会有一个玩家和一个敌人的角色,当玩家进入敌人的触发边界时,敌人会识别并发出攻击。此时,我们可以使用OnTriggerEnter来实现这个功能。

void OnTriggerEnter(GameObject other)  
{  
    if (other.tag == "Player") // 玩家的标签为"Player"  
    {  
        // 玩家进入敌人的触发边界,敌人发出攻击  
        //攻击代码...
    }  
}

总结

OnCollisionEnterOnTriggerEnter虽然都是用于检测物体之间交互的函数,但它们的应用场景和处理方式有所不同。在实际开发中,我们需要根据具体开发需求选择合适的函数来实现所需的功能。

除此这两个函数外,还有跟两者配套使用的函数:

在这里插入图片描述

在这里插入图片描述

请添加图片描述

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

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

相关文章

Gbase8c认证考试课后题

Gbase8c认证考试课后题 第一次练习 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 第十一题 第十二题 第十三题 第二次练习 第一题 第二题 第三题 第四题 第五题 第三次练习 第一题 第二题 第三题 第四题 第五题 第四次练习 第一题 第二题 第三…

Shell 脚本应用(三)

使用 for 循环语句 for语句的结构 使用for循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同 的命令序列,直到变量值用完退出循环。在这里,“取值列表”称为for语句的执行条件,其中包括多…

从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽

摘要 目前是每天更新一篇, 因为我不止要写文章,这些代码也是我正在敲的。可能速度没有那么快,但是这个频率感觉还是可以的。 本篇是这个系列的第三篇,如果你是第一次看到这个文章,那你应该会对低代码有那么一丢丢兴趣…

ros2 学习11-通信中动作的定义及自定义action 交互示例

机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。 在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以…

【krita】实时绘画 入门到精通 海报+电商+装修+人物

安装插件 首先打开comfyUI,再打开krita,出现问题提示, 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora (可设置lora强度 增加更多…

解锁高效工作!5款优秀工时管理软件推荐

工时管理,一直是让许多企业和团队头疼的问题。传统的纸质工时表、复杂的电子表格,不仅操作繁琐,还容易出错。幸好,随着科技的进步,我们迎来了工时管理软件的春天。今天,就让我们一起走进这个新时代&#xf…

蛮力法之背包问题

问题: 有 n 个重量分别是 w1,w2....,wn 的物品(物品编号为 1-n)它们的价值分别为 v1,v2,...,vn 给定一个容量为 W 的背包。设计从这些物品中选取一部分放入该背包的方案。 每个物品要么选中要么不选中【其实每个物品只有 1 件】,要求选中…

智慧互联网银行引领金融变革,开源网安VulHunter护航数字化发展

某银行作为国内知名的互联网银行,以构建“智慧型互联行”为总体战略目标,始终坚持科技赋能金融的理念。通过AI、大数据、云计算等数字技术与金融业务的探索融合,实现以更低的成本为客户提供便捷、高效和优质体验的互联网金融服务。 架构升级助…

基于ssm+vue的在线听书网站论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,书籍信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…

如何利用烛龙和谷歌插件优化CLS(累积布局偏移) | 京东云技术团队

简介 CLS 衡量的是页面的整个生命周期内发生的每次意外布局偏移的最大突发性_布局偏移分数_。布局变化的发生是因为浏览器倾向于异步加载页面元素。更重要的是,您的页面上可能存在一些初始尺寸未知的媒体元素。这种组合意味着浏览器在加载完成之前无法确定单个元素…

HarmonyOS快速入门之开发准备

开发准备 本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用(如下图所示),快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。 在开始之前,您需要了解有关HarmonyOS应用的…

EOCR-i3M420/iFM420施耐德智能通讯保护继电器产品简介

EOCR-i3M420/iFM420是施耐德EOCR的新一代电子式电动机保护器产品,具有过电流、欠电流、缺相、逆相、堵转、失速、三相不平衡等保护功能,并具有4-20mA电流输出功能。EOCR-i3M420/iFM420是通讯型产品,提供Modbus RTU通讯协议,RS485接…

nodejs+vue+微信小程序+python+PHP兴趣趣班预约管理系统设计与实现-计算机毕业设计推荐

当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。 软件信息技术能够覆盖社会各行业领域是时代的发展要求&…

Shiro的认证与授权过程的401自定义信息返回格式

spring boot与shiro整合的很多这个不用多赘述,主要分享下过滤器这块 shiro中的部分过滤器 anon过滤器:用于处理匿名访问,即不需要身份验证的URL。 authc过滤器:用于进行身份验证,如果身份验证失败,将会返…

ModuleNotFoundError: No module named ‘tensorflow‘

直接运行pip install tensorflow安装成功之后,发现版本是tensorflow2.15.0 python的版本是3.9版本 导入包:import tensorflow 打包xxx.exe,调用之后提示错误 ModuleNotFoundError: No module named tensorflow 最后发现特定的python的版本对应特定的t…

Qt 6.3 学习笔记

文章目录 Qt的安装和配置创建一个Qt项目信号和槽布局和控件绘图和动画数据库和网络 Qt是一个跨平台的C图形用户界面应用程序开发框架。它提供了创建GUI应用程序的工具和库。Qt 6.3是Qt的最新版本,引入了许多新特性和改进。在这个章节中,我们将详细介绍如…

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结: 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

109基于MATLAB 中的设施布局设计和位置分配

基于MATLAB 中的设施布局设计和位置分配,通过PSO算法进行最佳位置匹配。程序已调通,可直接运行。 109设施布局设计和位置分配通 (xiaohongshu.com)

2023光伏“洗牌”,鼎捷数智方案如何助力企业抓住时代契机?

2023年的光伏行业正进入重新“洗牌”的阶段! 一方面,在“双碳政策”和全球能源危机的双重驱动下,我国光伏全产业链迎来高速增长,成为外贸出口“新三样”之一。光伏发电正加速取代传统化石能源,在电网中发挥着日益重要的…

vue3+Ts

安装 命令含义可参考typescript文章中的自动编译部分 npm create vitelatest vuets-project -- --template vue-tsvs code插件 Vue Language Features (Volar)对.vue文件进行实时的类型错误反馈TypeScript Vue Plugin (Volar) 用于支持在TS中import*.vue文件(mai…