在帧结束之前删除gameObject



我有两个非常接近的gameObject(我们称它们为A和B(,另一个以一定的速度出现(假设它是C(。我想要的是:对象C删除它自己,同时删除它正在碰撞的对象A。我使用onTriggerEnter函数和Delete((方法来完成这项操作,但不幸的是,这会删除帧末尾的两个gameObject。并且在这个非常短的时间内(碰撞->删除(正在移动的对象C可以与对象B碰撞那么,有人有办法在物体C与物体B碰撞之前删除它吗?

您有许多可用的选项。

第一个,也是最激烈的,是使用DestroyImmediate。这里的文件描述了它可能被使用的原因,但也警告不要使用它,除非你有特定的原因。

另一种选择是更改对象的Layer,这样在下一次FixedUpdate期间就不会发生C的冲突。这应该立即应用,并防止对象碰撞。要做到这一点,你必须确保你有一个新的层,在你的物理(或物理2D(设置中,你需要确保对象C所在的层不会与新的层碰撞。你可以在Unity文档中找到更多关于碰撞矩阵的信息。

一个快速代码示例可能看起来像这样:

public LayerMask noCollisionLayer;
public GameObject ObjectB;
private void OnCollisionEnter ( Collision other )
{
ObjectB.layer = noCollisionLayer;
}

最新更新