当前位置: 首页 > article >正文

【Unity基础】对比OnCollisionEnter与OnTriggerEnter

在Unity中,OnCollisionEnterOnTriggerEnter 是两种用于处理碰撞的回调函数,但它们的工作方式和使用场景有所不同:

1. OnCollisionEnter

  • 触发条件:当一个带有 Collider 组件并且**未勾选“Is Trigger”**的物体,与另一个带有 ColliderRigidbody 的物体发生碰撞时,会触发OnCollisionEnter
  • 传入参数:此函数接收一个 Collision 类型的参数,包含了碰撞对象的详细信息(如碰撞点、力的方向等)。
  • 用途OnCollisionEnter 多用于处理实际物理碰撞,比如角色与地面的接触,或者物体之间的冲撞效果等。
  • 要求:至少一个物体需要有 Rigidbody,且两个碰撞的物体的 Collider 都不能是 Trigger

示例代码

void OnCollisionEnter(Collision collision) {
    Debug.Log("物体发生了碰撞: " + collision.gameObject.name);
}

2. OnTriggerEnter

  • 触发条件:当一个**勾选了“Is Trigger”**的 Collider,与另一个 Collider 发生重叠时,会触发OnTriggerEnter
  • 传入参数:此函数接收一个 Collider 类型的参数,提供与触发器发生接触的对象信息。
  • 用途OnTriggerEnter 通常用于检测区域性触发,比如检测角色进入特定区域、拾取道具、触发机关等情况。
  • 要求:通常至少一个物体有 Rigidbody,并且需要勾选 “Is Trigger”。

示例代码

void OnTriggerEnter(Collider other) {
    Debug.Log("物体进入触发器区域: " + other.gameObject.name);
}

总结

  • OnCollisionEnter 用于检测实际物理碰撞,而 OnTriggerEnter 用于检测触发区域的进入
  • OnCollisionEnter 使用时,不应勾选 Collider 的 Is Trigger,而 OnTriggerEnter 则需要勾选 Is Trigger
  • OnCollisionEnter 提供 Collision 对象信息,而 OnTriggerEnter 提供 Collider 对象信息。

http://www.kler.cn/a/395177.html

相关文章:

  • SSE与WebSocket与MQTT
  • sql分区
  • 使用 VS Code 远程连接时解决 OpenSSL 版本不匹配及权限问题
  • HarmonyOS本地存储-Preferences(用户首选项)的使用
  • 在esxi8.0中安装黑群晖的过程记录及小问题处理
  • 数据产品:深度探索与案例剖析
  • 机器学习:CatBoost模型(高级版)——高效且强大的树形模型
  • 深度学习知识点5-马尔可夫链
  • 等保测评怎么做?具体流程是什么?
  • 鸿蒙UIAbility
  • 基于微信小程序的在线疫苗预约的设计与实现,LW+源码+讲解
  • 搜维尔科技:Haption力触觉交互,虚拟机械装配验证
  • 【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
  • C++《继承》
  • SpringBoot -- 自动化装配源码
  • 江协科技之STM32驱动1.3寸/0.96寸/0.91寸OLED显示屏介绍
  • js中import引入一个export值可以被修改。vue,react
  • 【计网】计算机网络概述笔记
  • 使用frp工具实现内网穿透
  • 基于yolov8、yolov5的车型检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • Scala的迭代器
  • javaWeb小白项目--学生宿舍管理系统
  • C语言不创建中间变量交换2个数
  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • vite + vue3 + ts解决别名引用@/api/user报错找不到相应的模块
  • 前端系统设计面试题(二)Javascript\Vue