OnCollision和OnTrigger无法响应的可能原因

用Unity的API检测碰撞时常常会遇到OnCollision和OnTrigger无法响应的情况,因此将可能的原因总结于此。
void OnCollisionEnter(Collision other)
- 需要双方都有Collider或者Rigidbody
- 双方如果有Rigidbody,那么不得勾选isKinematic

void OnTriggerEnter(Collider other):
- 需要双方至少有一个Rigidbody
- 可以勾选isKinematic
- 双方必须勾选Collider组件上的isTrigger

我在开发中遇到的问题是,两个都带Collider,但其中一方有Rigidbody,而且之前勾选了isKinematic,从而导致OnCollisionEnter无法响应。由于带Rigidbody的那个我不想让它受到刚体物理引擎的影响,所以采用另一种策略:将Gravity Scale设为0,isKinematic取消勾选。

除了使用上的差异,二者的功能也有所不同,从二者的参数就可以看出。Collision得到的信息比Collider要多,除了Collider包含的信息,Collision还可以获取二者接触的点的坐标等。
Collision的document

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值