unity物体添加刚体发生碰撞后不会下落_Unity中OnTriggerEnter执行条件

ee6877dac6b2edd1a8aa7e0790e7d988.png

OnTriggerEnter执行条件有三个

1、两个物体都必须有碰撞器(Collider)组件;

2、其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上;

3、最重要的一点,其中一个物体必须有刚体(Rigidbody)组件。如果是一个运动的物体(如子弹)去碰撞一个静止的物体,则刚体(Rigidbody)组件必须加在运动的物体上,否则无法触发OnOnTriggerEnter函数。所以这时候子弹身上就要加一个Rigidboyd而不是character controller;

就是发生碰撞的主体一定是要带刚体的,即只有带刚体的碰撞体去撞其他碰撞体时,双方才会收到碰撞事件,比如:

一、控制A(刚体加碰撞体)撞击 静止的B(只有碰撞体),双方能收到碰撞事件。

二、控制B(只有碰撞体)撞击 静止的A(刚体加碰撞体),双方收不到碰撞事件。

三、让A(刚体加碰撞体)自由下落,然后控制B(只有碰撞体)去撞击A,双方能受到碰撞事件。

得出的结论似乎是如果碰撞双方只有一个有刚体,那么那个刚体一定要处于运动的状态下才会有碰撞事件发生。

此外还有两点:

一、产生触发事件的两个物体会相互穿越,isTrigger检测的是可穿越碰撞,准确的说是因为开启IsTrigger那个物体会被物理引擎所忽略掉,所以会产生两个物体穿过的情况。如果人物有Rigidbody,而且想让人物和地面产生碰撞事件且不穿过地面,可以不勾选isTrigger,用OnCollisionEnter(Collision collison)检测碰撞。

二、两个对象要么都收到碰撞事件,要么都收到触发事件,不会出现一个收到触发事件,一个收到碰撞事件的情况。


版权声明:本文为weixin_39865204原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。