如何检测游戏对象是否同时与其他两个特定对象发生碰撞?

时间:2015-10-03 14:19:22

标签: c# unity3d unity5

如何检测游戏对象是否与其他两个特定对象同时发生冲突?

这是我打算做的,但它不起作用:

lambda expressions are not supported in -source 1.5

如何更正这段代码?

2 个答案:

答案 0 :(得分:1)

如果您与2个对象发生碰撞,OnCollisionEnter方法将被调用两次,因此您必须跟踪他们的游戏对象或名称。

List<string> contacts = new List<string>();
void OnCollisionEnter (Collision col)
{
    contacts.Add(col.gameObject.name);
    if(contacts.Contains("object1") && contacts.Contains("object2"))
    {
        Destroy(gameObject);
    }
}
void OnCollisionExit(Collision col)
{
    contacts.Remove(col.gameObject.name);
}

但请记住添加引用以使列表生效

using System.Collections.Generics;

答案 1 :(得分:0)

如果您正在检查有关碰撞的任何事件的碰撞, 与Collider.OnCollisionEnter Collider.OnCollisionStay Collider.OnCollisionExit一样,您可以从事件传递的Contact参数中获得所有 Collision

Collision.contacts您可以通过枚举gameObject中的ContactPoint来获取Collision.contacts,并且: ContactPoint.otherCollider.gameObject并检查其名称:)

希望它有所帮助:)

更多信息:Collision Contacts - Unity Docs

相关问题