【Unity3d游戏开发】unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(转载)

  此文为转载,因为最近在做U3D,有一些概念弄得不是很清楚,看到这篇博客讲的不错,就转载过来了,方便自己随时查看。

  ---------------------------------------------------华丽丽的分割线---------------------------------------------------------------

太抽象的理论总是让人眼花缭乱,所以我这里以例证为主。

1,测试OnTriggerEnter和OnCollisionEnter的区别

测试:如果两个物体A,B 

两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等)

A,B都有刚体(Rigidbody)

A或者B中有一个勾选isTrigger或者两者都勾选isTrigger A和B都可以进入OnTriggerEnter方法,但是不可进入OnCollisionEnter方法。

A和B都不勾选isTrigger,A和B能进入OnCollisionEnter方法但是不能进入OnTriggerEnter方法。

结论:

OnCollisionEnter方法必须是在两个碰撞物体都不勾选isTrigger的前提下才能进入,反之只要勾选一个isTrigger那么就能进入OnTriggerEnter方法。

OnCollisionEnter和OnTriggerEnter是冲突的不能同时存在的。

2,OnTriggerEnter和OnCollisionEnter的选择。

如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。

如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

3,一些技巧。

3.1:刚体(Rigidbody)的使用。

     两个碰撞的物体A 和 B

     现在我们就可以分两种模式来分析了,就是OnTrigger模式和OnCollision模式,因为上面已经详细介绍了两者是对立的模式, 

     在OnCollision模式下:

     测试1:如果只有A有刚体(Rigidbody),那么当A去碰撞B时,发现A弹开B没有动。A和B都进入OnCollisionEnter方法

     结论1:只有刚体能实现真实的物理碰撞。

     测试2:如果只有A有刚体(Rigidbody),那么当B去碰撞A时,发现没有碰撞效果,A和B都没有进入OnCollisionEnter方法。

     结论2:实现碰撞的条件是,发起碰撞方必须具有刚体。

     这里我猜测了刚体是用来实现物理真实碰撞的Component,但是这个想法是错误的,因为OnTriggerEnter也必须有一个物体具有刚体,所以猜测刚体应该是一个判断是否实现碰撞的是与否的标志。

     在OnTrigger模式下:

     A和B必须有一个有刚体(Rigidbody),A和B都可以进入OnTriggerEnter方法。

4,知识扩展。

上面的内容中有的实验是A,B有一个有刚体,有的实验是A,B都有刚体,那么为什么不干脆把两个物体都加刚体就没这么多麻烦了?

其实是这样的,真实游戏里面,有太多的物体,而这些物体如果都有刚体那么对系统的开销是很大的,如果可以减少一半的开销是很不错的选择。

比如地面就可以不设置刚体,因为地面是永远不动的,把人物设置刚体就可以实现真实的物理碰撞效果了。

作者:马三小伙儿 出处:http://www.cnblogs.com/msxh/p/6024905.html 请尊重别人的劳动成果,让分享成为一种美德,欢迎转载。另外,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

关GPS也没用:手机电池电量会暴露你的行踪,定位准确率高达90%

电池电量也会泄露手机位置信息?是的,这并不是天方夜谭。安全研究人员已经实现了一种方法,通过智能手机电池消耗精确获得的你的位置信息。 或许有的朋友会说,只要我关...

19610
来自专栏腾讯社交用户体验设计

腾讯微云 智能扫描

2623
来自专栏ThoughtWorks

业务分析实践:10个常见问题 | TW洞见

今日洞见 本文作者:ThoughtWorks-亢江妹。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个人...

3559
来自专栏DevOps时代的专栏

警告:小心被假持续集成骗了

? 刚刚发布的ThoughtWorks技术雷达 建议技术团队“暂缓或谨慎”使用反模式“CI theatre(伪CI,可以理解为不完整的持续集成)”。 “伪CI...

2256
来自专栏一名叫大蕉的程序员

赵淦森博士的讲座分享整理No.32

我是小蕉。 先稍微介绍一下赵老师哈。 赵淦(gan)森,计算机安全博士,毕业于英国肯特大学。在英国期间曾任英国Nexor公司的兼职高级安全技术顾问、甲骨文英国(...

2276
来自专栏大数据文摘

王昊奋:大规模知识图谱技术

9275
来自专栏ATYUN订阅号

Google Cloud现已支持Nvidia Tesla P4推理加速器

目前,没有GPU的支持,就不会有完整的云平台。毕竟,没有其他方法可以支持没有它们的高性能和机器学习工作负载。

912
来自专栏腾讯技术工程官方号的专栏

大型DCI网络智能运营实践

? 9月14-15日,GOPS全球运维大会上海站圆满举行,为期两天的运维盛宴,为各位运维人带来了相互交流和学习的绝佳平台,来自腾讯技术工程事业群(TEG)网络...

1442
来自专栏CSDN技术头条

随笔|关于数据感悟

➤明确技术与业务的关系 知识和发明来自实践和生产的实际需要,OSI的7层模型再美、再学院化也没有干过TCP/IP。 切莫强求技术驱动,技术职责第一要务是做好深度...

1945
来自专栏小狼的世界

[每天五分钟,备战架构师-11]数据库系统

数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的,但又是潜在有用的信息和知识的过程。

1432

扫码关注云+社区

领取腾讯云代金券