2015-10-03 4 views
0

Как я могу обнаружить, что объект gameObject столкнулся с двумя другими конкретными объектами в то же время?Как я могу определить, столкнулся ли объект gameObject с двумя другими конкретными объектами одновременно?

Это то, что я намерен делать, но он не работает:

void OnCollisionEnter (Collision col) 
{ 

if(col.gameObject.name == "object1" && "object2") 
    { 
     Destroy(gameObject); 
    } 
} 

Как я могу исправить этот кусок кода?

+0

Попробуйте здесь http://gamedev.stackexchange.com/ – Mihai

+0

Когда ты звонишь это? 'OnCollisionEnter'? – faztp12

+0

Да. OnCollisionEnter –

ответ

1

Если вы проверяете столкновения на любом из событий, обожженных о Коллисоном, как Collider.OnCollisionEnterCollider.OnCollisionStayCollider.OnCollisionExit, вы могли бы получить ВСЕ в Contact точку из параметра Collision принятого событием по

Collision.contacts и вы могли бы получить gameObject по Перечисляя ContactPoint с в Collision.contacts и это: ContactPoint.otherCollider.gameObject и проверить его имя :)

Надеюсь, что это помогло :)

Подробнее: Collision Contacts - Unity Docs

0

Если вы сталкиваясь с 2-мя объектами метод OnCollisionEnter будет вызван дважды, так что вы должны следить за их GameObject или имена.

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; 
+0

Не могли бы вы объяснить шаг за шагом свой код? А где object2? –

+0

Я довольно новичок в программировании и единстве. –

+1

У нас есть список, который может содержать строки Когда объект сталкивается с объектом, у которого есть этот скрипт, имя другого объекта будет добавлено в список. И тогда код проверяет наличие двух имен объектов. Итак, если это правда, объект будет уничтожен. – Quakenxt