Unity中C#触碰销毁物体脚本无法正常工作求助
Unity碰撞销毁脚本故障排查
你的代码逻辑本身是正确的,但OnCollisionEnter方法需要满足特定条件才会触发,按以下步骤逐一检查:
双方必须都有启用的Collider组件
脚本挂载对象和与之碰撞的物体,都要添加Collider(如BoxCollider、SphereCollider),且Collider的Is Trigger选项不能勾选——如果勾选了,需要改用OnTriggerEnter方法。至少一方要有非运动学Rigidbody组件
Unity的物理碰撞系统要求,碰撞双方中至少有一个物体带有Rigidbody组件,且该Rigidbody不能设置为Kinematic(如果其中一方是静态场景物体,可以给它添加Rigidbody并勾选Kinematic,同时确保另一方的Rigidbody为非运动学)。检查图层碰撞矩阵
打开Edit > Project Settings > Physics,查看图层碰撞矩阵,确认两个物体所在的图层是允许相互碰撞的,不要误取消了对应图层的碰撞勾选。确认脚本挂载位置
脚本必须挂载在你想要销毁的目标物体上,如果挂载到了碰撞对象上,会错误销毁碰撞对象,或者因碰撞条件不满足而不触发。
如果以上检查都没问题,可以尝试改用触发模式快速验证:
勾选其中一个物体Collider的Is Trigger,然后替换代码为:
using UnityEngine; public class DestroyOnCollision : MonoBehaviour { private void OnTriggerEnter(Collider other) { Destroy(gameObject); } }
内容的提问来源于stack exchange,提问作者Jesseca Ferreri
相关产品推荐
相关产品推荐

