Unity 5.6 2D - 如何检查 2 个碰撞体是否未接触任何其他碰撞体?



在Unity 5.6 C#中,我知道有一种方法可以使用IsTouching检查碰撞体是否被任何其他碰撞体触摸。

但是,我想知道如何将两个碰撞器组合在一起(相互接触(,以及如何检查它们是否都在相互接触任何碰撞器。

我会用我在评论中提到的想法试一试(我看到只有评论部分很难理解(。

我会使用碰撞列表并在此处存储任何触摸,使用OnCollisionEnterOnCollisionExit过滤掉"伙伴"碰撞体。

由于两者都附加到同一个游戏对象,因此很容易过滤它们:

public class Collisions : MonoBehaviour
{
// Show in the Inspector for debug
[SerializeField] private List<Collider> colliderList = new List<Collider>();
public bool IsTouching => colliderList.Count != 0;
private void Awake ()
{
// Make sure list is empty at start
colliderList.Clear();
}
private void OnCollisionEnter(Collision collision)
{
// Filter out own collider
if(collision.gameObject == gameObject) return;
if(!colliderList.Contains(collision.collider) colliderList.Add(collision.collider);
}
private void OnCollisionExit(Collision collision)
{
// Filter out own collider
if(collision.gameObject == gameObject) return;
if(colliderList.Contains(collision.collider) colliderList.Remove(collision.collider);
}
}

在智能手机上输入,但我希望这个想法清楚

最新更新