如何检测游戏对象是否与其他两个特定对象同时发生冲突?
这是我打算做的,但它不起作用:
lambda expressions are not supported in -source 1.5
如何更正这段代码?
答案 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
并检查其名称:)
希望它有所帮助:)