2013-12-02 6 views
12

У меня есть два 2D игровых объекта. У каждого из них есть Box Collider 2D и жесткое тело 2D, которое не является кинематическим. Когда игра играет, одна движется в другую и сталкивается с ней.Обнаружение столкновений не работает в Unity 2D

Однако, у меня есть следующий метод в движущейся GameObject:

void OnCollisionEnter(Collision collision) 
{ 
    print("Collided with someone"); 
} 

Печать заявление никогда отпечатков, поэтому предположительно метод никогда не вызывается. Где я иду не так?

+0

Можете ли вы подтвердить, что ваш класс наследуется от [MonoBehaviour] (http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnCollisionEnter.html)? Измените ссылку Scripting на C# в документах. Вопрос об игре-разработке лучше всего задать здесь: [gamedev] (http://gamedev.stackexchange.com/) – Measuring

+4

Я не проверял, но есть ['OnCollisionEnter2D'] (http: // docs. unity3d.com/Documentation/ScriptReference/Collider2D.OnCollisionEnter2D.html), который вы должны использовать. Это меня охватило, когда я конвертировал 2D-игру в свою 2D-фреймворк ... –

+0

А! Это было, спасибо Т. Кили =) –

ответ

26

Unity реплицировала все физические методы для 2D со словом «2D», застрявшим на конце! Поэтому для вашего примера его следует изменить на:

void OnCollisionEnter2D(Collision2D collision) 

И то же самое, что и в любой другой физической физике.

Смежные вопросы