Unity中有两个独立的物理引擎,一个用于3D物理系统,一个用于2D物理系统。两个引擎是使用不同的组件实现的。因此BoxCollider和Rigidbody一起使用,代码中用OnTriggerEnter才能检测到触发;BoxCollider2D和Rigidbody2D一起使用,代码中用OnTriggerEnter2D才能检测到触发。

接下来组件以2D示例讲解。

Rididbody2D

刚体(Rigidbody),有了这个物体就有看物理行为(受力的作用),两个物体想要发生碰撞检测,其中一个必须带有刚体组件。

BoxCollider2D

盒状碰撞体,只是碰撞体的一种。‘

碰撞

发生碰撞检测的必要条件:两个物体必须都有Collider,有一个带有Ridibody。碰撞检测的方法:
(如果两个对象都是运动刚体(勾选了kinematic),不会调用这些函数)
OnCollisionEnter2D( Collision collisionInfo ) 进入碰撞器
OnCollisionExit2D( Collision collisionInfo ) 退出碰撞器
OnCollisionStay2D( Collision collisionInfo ) 停留碰撞器

触发

如果其中一个碰撞体勾选了is Trigger,那么该脚本的方法就能检测到触发检测了:
OnTriggerEnter2D( Collider other )进入触发器
OnTriggerExit2D( Collider other )退出触发器
OnTriggerStay2D( Collider other )停留触发器

更多参考Unity手册翻译

问题

在操作附加了Rigidbody2D的物体时,不要直接通过操作Transform来移动、旋转它。

通常,Unity Editor 的Transform组件定义游戏对象(及其子游戏对象)在场景中的定位、旋转和缩放方式。更改Transform组件将更新其他组件,这样可以更新渲染对象的位置或碰撞体所在位置之类的属性。2D 物理引擎能够移动碰撞体并使这些碰撞体彼此交互,因此物理引擎需要一种方法将碰撞体的此移动状态传回变换组件。此移动以及与碰撞体的连接便是 2D 刚体组件的用途。

2D 刚体组件会覆盖Transform组件,并将其更新为 2D 刚体定义的位置/旋转。请注意,虽然仍然可以通过自行修改变换组件来覆盖 2D 刚体(因为 Unity 会公开所有组件上的所有属性),但是这样会导致各种问题,例如游戏对象相互穿过或嵌入等问题以及不可预测的移动。

Unity碰撞检测的必要条件相关推荐

  1. Unity碰撞检测机制的原理(更新中...)

    总是碰到关于碰撞的问题,今天实在忍不住了,来把它搞懂,不然听到八叉树,BSP什么的就怕可不行. 转自:http://www.manew.com/thread-102595-1-1.html 碰撞机制 ...

  2. unity碰撞检测函数,碰撞信息获取,触发检测,使用粒子系统创建火焰,创建动画(火光闪烁),导航系统,通过导航系统控制人物移动,控制摄像机的跟随,控制角色动画播放

    碰撞检测函数 private void OnCollisionEnter(Collision collision){print("OnCollisonEnter");}privat ...

  3. unity 碰撞检测的四种检测模式

    四种检测模式 Discrete:离散检测 通过在物理间隔时间中检测碰撞来工作 对场景中的所有其他碰撞体使用离散碰撞检测,其他碰撞体在测试碰撞时会使用离散检测. 用于正常碰撞(默认值) 缺点: 快速移动 ...

  4. Unity 碰撞检测

    OnTriggerEnter和OnCollisionEnter两种方法 都需要添加Collider属性 OnTriggerEnter:碰撞方添加Rigidbody,Collider勾选is Trigg ...

  5. unity碰撞检测识别对象的几种方法,刚体篇

    文章目录 一. 指定碰撞层级 二. 指定Collider组件的标签 三. 判断物体的类型 四. 判断物体的名字 一. 指定碰撞层级 可以在物体的Collider组件中设置碰撞层级,只有属于指定层级的物 ...

  6. Unity碰撞检测/触发器触发问题

    在制作2D平板冒险游戏的攻击模块时,遇到攻击敌人后无法产生触发器事件的问题. 在玩家游戏对象下有一攻击子对象.子对象碰撞器默认处于禁用状态,当按下攻击键时,通过代码: gameObject.GetCo ...

  7. 关于Unity碰撞检测失败的冷门原因

    问题背景 在学习Unity3d项目(版本2018.3.f1)的时候出现了Trigger对象始终不执行OnTriggerEnter函数问题,运动对象自带Rigidbody组件以及Collider组件,被 ...

  8. Unity | 碰撞检测相关

    产生碰撞的条件 勾选isTrigger的collider2D没有 挂有rigibody2D组件 另外一个物体的collider2D不用勾选isTrigger 并且带有rigibody2D组件 两个co ...

  9. unity碰撞检测的几种函数

    文章目录 一. 二. 三. 四. 五. 六. 七. 代码 一. OnCollisionEnter(Collision collision):这个函数用于检测两个物体之间的碰撞事件,当两个物体发生碰撞时 ...

最新文章

  1. Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
  2. 你要成为人才,先学习做伯乐
  3. 在easyui中在同一列中合并相同连续值的jquery插件
  4. 人工智能:第五章 计算智能(2)
  5. 【转】ASP中的SQL注入
  6. 2019 年百度之星·程序设计大赛 - 初赛二
  7. HashMap和ArrayList初始大小和扩容后的大小
  8. 《SolidWorks 2013中文版完全自学手册》——2.5 添加几何关系
  9. 微信小程序 数据库获取字符串 在view中显示换行
  10. ios 表情符号 键盘_更方便地输入颜文字表情:教你如何在 iPhone 键盘中添加颜文字...
  11. Python爬取Facebook公共主页帖子
  12. Web3依赖参与型经济,而它缺少的正是参与
  13. 教你2种常用的电商高并发处理解决方案
  14. 【用pandas_alive几行代码绘制竞赛动图】全网首发pandas_alive数据可视化中文学习笔记合集,学不会来打我(配置好的venv虚拟环境+拿来即用测试代码+测试数据集+参数api解析)
  15. wps word文档生成目录的时候显示断裂会生成大纲怎么办_如何用Word编辑参考文献...
  16. Java 旋转、翻转图片工具类(附代码) | Java工具类
  17. beyond compare下载安装及使用教程
  18. springboot 优雅关闭_springboot优雅的关闭应用
  19. cad app android,迷你CAD免费手机版
  20. 【PS/AI】2021新年金色装饰背景矢量素材

热门文章

  1. 蒟蒻君的刷题日记Day1:CF1A Theatre Square
  2. MFC Tab背景颜色及窗体内控件背景颜色更改
  3. 伦敦银,基本面投资分析技巧
  4. Web3j通过合约地址监听transfer事件获取以太坊交易数据
  5. 源码级深度理解 Java SPI
  6. vmware 主机ipmi系统事件日志状态
  7. 洗碗机耗材:finish 亮碟 产品的选购
  8. 从零开始,用CubeMX让M2006电机转起来,大疆C板控制M2006电机
  9. bzoj 5191~5193 口胡题解
  10. Python--进程与线程