今天有空就仔细研究了一下Collision Detection的问题,以前总是弄不明白Continuous和Continuous Dynamic到底有什么区别,今天算是彻底弄明白了,官方文档说的太晦涩了不太容易解释.于是我自己做了一张图,各位基本上一看就懂,

需要知道的唯一一点就是Continuous类型的检测比Discrete更加消耗性能.

官方文档的原文,不便于理解更不便于记忆.

我的理解如下:
Continuous---对Discrete以及Continuous类的刚体使用Discrete检测(但除了Continuous Dynamic,因为Continuous Dynamic只对Discrete的刚体使用Discrete检测,那么就会对Continuous使用Continuous检测,反之亦然.) 除此之外还对静态物体使用Continuous检测
Continuous Dynamic---只对Discrete的刚体使用Discrete检测,对其他任何刚体或者静态物体都使用Continuous检测.
要点:Continuous和Continuous Dynamic都会对静态物体使用Continuous检测.
在使用的时候,一般对高速运动的刚体使用Continuous Dynamic,这时只需要记住,要将其他的刚体设置为非Discrete才会让高速运动的物体以及其他刚体之间产生Continuous检测,可以将其他刚体设置为Continuous或者Continuous Dynamic,但是不会进行高速运动的其他物体不必设置为Continuous Dynamic,因为Continuous Dynamic比Continuous更消耗性能.

怎么样是不是很繁琐,如果非要用一句话来概括重要知识点,那么就是下面这句:
Continuous和Continuous Dynamic的区别在于对Continuous使用何种检测,Continuous使用Discrete,而Continuous Dynamic使用Continuous!

另外贴一个很多人都会遗漏的重要知识点,这个知识点是我在API文档里面找到的,也就是User Manual和Component Reference里面是没有这句话的,请各位记住: Continuous Collision Detection is only supported for Rigidbodies with Sphere-, Capusle- or BoxColliders!!! 也就是说,如果你的Collider不是自带的球形或者立方体或者胶囊Collider的话,你无论设置成什么都只会使用Discrete检测!

这段话在Unity4.x从入门到精通中也是是有翻译的:
CollisionDetection:碰撞检测
该属性用于控制避免高速运动的游戏对象穿过其他的对象而未发生碰撞,有三项可供选择
Discrete:离散碰撞器。该模式与场景中其他的所有碰撞体进行碰撞检测。该项为默认值。
Continuous:连续碰撞检测。该模式用于检测与动态碰撞体(带有Rididbody)的碰撞,使用连续碰撞检测模式来检测与网格碰撞体(不带ridigbody)碰撞。(添加一句原文翻译漏了),Rigidbody设置为连续动态碰撞检测模式将使用连续碰撞来检测。其他刚体会采用离散碰撞模式。此模式适用于那些需要与采用连续动态检测的对象相碰撞的对象。这对物理性能会有很大影响,如果不需要对快速运动对象进行碰撞检测,就使用离散碰撞检测模式。
Continuous Dynamic:连续动态碰撞检测模式,该模式用于检测与采用连续碰撞撞模式或连续
动态碰撞模式对象的碰撞,也可用于检测没有rigidbody的静态网格碰撞体。对于与之碰撞的其他对象可采用离散碰撞检测。动态连续碰撞检测模式也可用于检测快速运动的游戏物体。
翻译就是这样的理解并不难:后面两项就是为了用来能够检测到快速运动的物体不至于
你的void OnCollisionEnter(Collision hit)函数检测不到,而至于一个为Continuous Dynamic的刚体和一个Discrete的刚体碰撞,前者会使用使用Continous(连续)碰撞,后者离散碰撞.

说了这么多,其实还是不是很好理解,这里我说下自己的个人理解

可能发生碰撞的高速对象,选择连续动态模式
可能与高速对象碰撞的对象,选择连续模式
其他的选择离散模式

论Collision Detection的作用的更多相关文章

  1. Collision Detection

    [Collision Detection] Collision Detection是Rigidbody中的一个属性.所以显然Collision Detection指定的类型只在Rigidbody之间才 ...

  2. Chrysler -- CCD (Chrysler Collision Detection) Data Bus

    http://articles.mopar1973man.com/general-cummins/34-engine-system/81-ccd-data-bus CCD (Chrysler Coll ...

  3. Clash Detection

    Clash Detection eryar@163.com Abstract. Clash detection is used for the model collision check. The p ...

  4. 2D Rotated Rectangle Collision

    Introduction While working on a project for school, I found it necessary to perform a collision chec ...

  5. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  6. IEEE 802.3 Ethernet

    Introduction Ethernet 是过去30年以来最为成功的局域网(local area networking)技术. 1. First widely used LAN technology ...

  7. UNIX/Linux网络编程基础:图解TCP/IP协议栈

    目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...

  8. linux 网桥的配置与实现

    ==================================================================================from: http://www.i ...

  9. 【Unity探究】物理碰撞实验

    这几天为了准备面试,所以决定对平时学习中的盲点扫盲一下,首先想到的就是物理碰撞.以前没有好好研究过,一直模糊不清,到底什么条件下才可以产生物理碰撞呢?只要其中一个有Rigidbody就可以了吗?所以进 ...

随机推荐

  1. EXT2 文件系统

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/22/2651641.html#ext2_filesystem 认识ext文件系统 硬盘组成与分 ...

  2. 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks

    Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...

  3. 谷歌大牛Jeff Dean是如何成为互联网战神的

    “光在真空中的速度曾经是大约每小时35英里,然后Jeff Dean花了一个周末优化了基础物理学.”——出自“关于Jeff Dean的事实” 其实,“关于Jeff Dean的事实”这个G+帖中描述的并非 ...

  4. how-to-install-hyper-v-on-a-virtual-machine-in-hyper-v.aspx

    BEFORE STARTING IT IS IMPORTANT TO KNOW THAT THIS ENVIRONMENT IS NOT SUPPORTED BY MICROSOFT. USE IT ...

  5. noip2011普及组——统计单词数

    统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...

  6. windows 2003 server 远程桌面禁用本地资源,磁盘驱动器,串行口,复制文件

    首先进入组策略编辑器(开始-运行-gpedit.msc) 不要让用户在远端桌面和本地直接拷贝文件在远端桌面上进入它的组策略编辑器在 计算机配置->管理模板->Windows组件->终 ...

  7. paypal接口对接注意事项

    追加:新的设定画面 在paypal对接过程中,会存在return_url和notify两种 分别用pdt和ipn实现 但是对于paypal,大家请注意,真实环境和沙盒测试环境的区别 你可以到www.p ...

  8. 如何修改Oracle字符集

    一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...

  9. js Number越界比较.

    Javascript number超过16位就无法比较了,所以自己写了一个. 用到的数组函数 1.Array.reverse() 方法将一个 Array 对象中的元素位置进行反转.在执行过程中,这个方 ...

  10. 【jmeter】ANT批量执行Jmeter脚本

    一.环境准备: 1.Jdk1.6或以上:命令行输入:java -version,出现如下提示说明安装成功 2.ANT下载:http://ant.apache.org/bindownload.cgi 命 ...