• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

常州小程序开发-u3D TriggerEnter和CollisionEnter的差别

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0118/343.html

常州手游小程序开发-u3D TriggerEnterCollisionEnter的心得(差别)

 

太抽象的理论总是让人无从下手,所以我常州游戏开发运营这里以例证为主。

1,测试OnTriggerEnterOnCollisionEnter的区别

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

两者都有碰撞体colliderBox ColliderSphere ColliderCapsule Collider等)

AB都有刚体(Rigidbody

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

AB都不勾选isTriggerAB能进入OnCollisionEnter方法但是不能进入OnTriggerEnter方法。

结论:

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

OnCollisionEnterOnTriggerEnter是冲突的不能同时存在的。

2OnTriggerEnterOnCollisionEnter的选择。

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

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

3,一些技巧。

3.1:刚体(Rigidbody)的使用。

     两个碰撞的物体A B

     现在我们常州游戏开发培训-幻天网络就可以分两种模式来分析了,就是OnTrigger模式和OnCollision模式,因为上面已经详细介绍了两者是对立的模式, 

     OnCollision模式下:

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

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

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

     结论2:实现碰撞的条件是,常州手机App外包发起碰撞方必须具有刚体。

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

     OnTrigger模式下:

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

4,知识扩展。

常州App开发培训上面的内容中有的实验是AB有一个有刚体,有的实验是AB都有刚体,那么为什么不干脆把两个物体都加刚体就没这么多麻烦了?

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

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



上篇:上一篇:常州手游开发-U3D中的Path对应各平台
下篇:下一篇:常州微信小程序开发-U3D用Protobuf、ProtobufHelper