要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider collider)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider collider)当逗留触发器
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision)  当逗留碰撞器
两个物体相接触时到底执行OnTriggerEnter还是执行OnCollisionEnter方法,这两个又有什么区别呢?
为了验证碰撞器与触发器的区别,现设计一个简单的游戏,让小汽车与小球发生碰撞。新建一个C#脚本文件,把它拖给小汽车对象,双击该脚本文件进入脚本编辑器,在该脚本中加入如下两个方法,并分别设置一个断点:
void OnTriggerEnter(Collider collider)
{//进入触发器执行的代码
}
void OnCollisionEnter(Collision collision)
{//进入碰撞器执行的代码
}

当未勾选碰撞器的Is Trigger选项时汽车与球体发生碰撞,进入方法OnCollisionEnter,碰撞之后汽车产生被球体撞飞的效果:
如果将碰撞器的Is Trigger属性选中,再次启动游戏让球体与汽车产生接触,这时进入方法OnTriggerEnter。之后球体直接穿过汽车,但球体与汽车都没有产生碰撞效果:
unity3d中的碰撞器和触发器的区别?
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性
当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器

转载于:https://www.cnblogs.com/liushuang1992/p/6387215.html

Unity 碰撞器和触发器的理解相关推荐

  1. unity第三天:物体的碰撞器与触发器

    unity第三天:碰撞器与触发器 前言 一.吃豆球的豆 二.吃豆球 三.又是豆 前言 15:06- 很好, 又是一个下午开始的博客-- Code Start! 一.吃豆球的豆 在新建一个cube,命名 ...

  2. Unity3D --对撞机/碰撞器 介绍

    碰撞器一般都用作触发器而用,刚体一般用作真实碰撞. 静态对撞机:一个对象有对撞机组件,没有刚体组件. 这种情况在场景中的静态物体应用较多,比如墙体,房屋等静止不动的物体. 物理引擎假设静态对撞机是不会 ...

  3. Collider(碰撞器)与IsTrigger(触碰器)详解

    1.什么是碰撞器? 描述了物体可被碰撞的边界,以及碰撞过程中相互影响效果. 碰撞效果: 两个游戏对象碰在一起,通过物理引擎产生类似现实的效果 种类: 盒碰撞器(Box Collider) 椭圆碰撞器( ...

  4. 深入理解Unity刚体(Rigidbody)、碰撞器(Collider)、触发器(Trigger)

    来自:http://blog.csdn.net/monzart7an/article/details/22739421 刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unit ...

  5. 关于Unity中的刚体和碰撞器的相关用法(一)

    1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...

  6. Unity 2.Space Shooter(碰撞器Collider,WebGL,刚体中属性,(定时)实例化、销毁游戏对象,触碰OnTriggerEnter/Exit,爆炸效果,音频,文字,定时调方法)

    目录 项目介绍 WebGL发布 游戏对象设置 灯光.相机 背景 移动游戏对象 Debug 制作子弹 射击动作 清理离开边界的游戏对象 制作危险物 添加爆炸,移动小行星,作为预制件 创建游戏控制器 循环 ...

  7. 详解Unity中的车轮碰撞器Wheel Collider

    前言 碰撞体组件定义了物体的物理性状,Unity中有一系列基本碰撞体,我们可以使用它们组合成任意形状,但除了基本碰撞体之外,Untiy还提供了诸如车轮(Wheel).网格(Mesh).地形(Terra ...

  8. Unity学习日志_车轮碰撞器简介

    Unity学习日志_车轮碰撞器简介 1. 简介: 车轮碰撞器是一种针对地面车辆的特殊碰撞体.他有内置的碰撞检测.车轮物理系统和有滑胎摩擦的参考体.除了车轮,该碰撞体也可以用于其他游戏对象. 属性: M ...

  9. Unity车轮碰撞器起步刹车太慢

    Unity车轮碰撞器起步刹车太慢 遇到的问题 尝试的办法 刹车慢 起步慢 遇到的问题 在学校学习<物理引擎>专业课的时候,我们的期末作业是用unity的WheelCollider组件来对汽 ...

最新文章

  1. 【经验】广西集体户口迁回农村原籍超级攻略
  2. Android Studion有用的快捷键
  3. 计算机网络管理SIMP,计算机网络管理实验报告.docx
  4. [vue-element] ElementUI是怎么做表单验证的?在循环里对每个input验证怎么做呢?
  5. python解析xml文件选用模块_Python标准库系列之xml模块
  6. 4.maven中常用的构建命令
  7. 华为手机计算机怎么用根号,根号下怎么打_根号怎么打出来华为_根号怎么打出来手机-Guide信息网...
  8. matlab 求导数
  9. zktime 协议_ZKTiMe5.0考勤管理系统使用介绍(1.3版).pdf
  10. 安装在ntfs分区的linux,从硬盘NTFS分区安装mandriva linux
  11. 偏导数与全导数的关系 以及 偏微分与全微分的关系
  12. 再追哥德尔开篇---哥德尔逻辑与哲学之一
  13. 撤回/修改已经发送的Outlook邮件
  14. java 时区 夏令时_关于时区:如何显示Java开始夏令时后的时间差异?
  15. 现在俏皮话越来越多了
  16. 解决 VMware 中安装虚拟机时屏幕显示不全的问题
  17. 本地摄像头应用到远程计算机,3个可在iPad / iPhone上远程查看网络摄像头的应用 | MOS86...
  18. explicit含义
  19. PTA 钻石真题卷——均是素数
  20. 神经网络为什么需要加偏置项(bias)?

热门文章

  1. hihocoder #1617 : 方格取数(dp)
  2. pytion3--用户定义的迭代器
  3. MyEclipse配置进行Hibernate逆映射
  4. U-Boot移植(8)u-boot的流程
  5. access中case替代方法
  6. 如何取得事件中鼠标坐标
  7. hibernate mysql自定义变量_hibernate 跟 MySql in的参数变量
  8. python执行循环内存变大_python – 为什么我的循环在每次迭代时需要更多内存?...
  9. (191)FPGA上电后IO的默认状态(Vivado软件默认为0)
  10. 蜡烛图plotly_Python数据分析:基于Plotly的动态可视化绘图简介,目录书摘