在Unity 5.6 C#中,我知道有一种方法可以通过使用IsTouching来检查碰撞器是否被其他任何碰撞器碰触。
但是,我想知道如何将两个碰撞器(彼此接触)组合在一起,以及如何检查两个碰撞器是否彼此接触。
答案 0 :(得分:1)
我会用我在评论中提到的想法试一下(我发现仅凭评论部分很难理解)。
我将使用碰撞列表并在此处存储所有触摸,并使用OnCollisionEnter
和OnCollisionExit
过滤掉“伙伴”对撞机。
由于两个都附着在同一个GameObject上,因此很容易对其进行过滤:
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);
}
}
在智能手机上输入文字,但我希望这个想法能弄清楚