2015-12-15 3 views
3

Итак, в моей сцене много квадратов (около 200-300). Они двигаются немного, и им не нужно покрывать друг друга. Для компьютера довольно сложно добавить Rigidbody2D. Я попытался добавить BoxCollider2D и Mesh Colliders на каждый объект и код OnCollisionEnter2D в скрипте, но он просто не работает. Convex MeshColliders не работает (на 2D, я полагаю, почему?). Итак, как я могу справиться с этим, не используя Rigidbody? Неправильно ли использовать Collider2D?Проверьте столкновение2D без Rigidbody2D

EDIT:

Прежде всего, я прошу прощения за мой плохой английский.

Secondary Я хочу поблагодарить всех вас за ответы. Это отличные ссылки, и я потрачу много времени, чтобы пойти глубже в этом. Я нашел ответ, это quadtree. Есть хороший пример/учебник в this page

+1

Когда есть много взаимодействующих объектов, и если вы хотите знать только о столкновениях, вы можете реализовать свой собственный алгоритм, например [quadtrees] (https://en.wikipedia.org/wiki/Quadtree). Хороший пример/учебник [на этой странице] (http://gamedevelopment.tutsplus.com/tutorials/quick-tip-use-quadtrees-to-detect-licious-collisions-in-2d-space--gamedev-374), pd. Я не знаю, использует ли * OnCollisionEnter2D этот подход –

+0

О, спасибо большое! Это именно то, что я искал :) –

ответ

1

«Для компьютера довольно сложно добавить Rigidbody2D». Вы имеете в виду, что он имеет стоимость исполнения?

Жесткие тела используются для обнаружения столкновений. Вам не нужно, чтобы обе сталкивающиеся стороны имели жесткое тело. Например, если у вас есть 100 квадратов в вашей сцене в качестве препятствий, вы можете столкнуться, если объект вашего игрока (например, круг в виде шара) имеет компонент Rigidbody. В этом примере для шара требуется CircleCollider2D + Rigidbody2D, для препятствий должен использоваться только BoxCollider2D.

+0

Да, сцена загружается очень медленно, если я добавлю около 80 'Rigidbody2D'. Игра не должна поддерживать физику2D. –

+0

Если только одна сторона сталкивающихся частей, физика тоже работает. И для 2D все ваши коллайдеры должны иметь «2D» пост-исправление. Поскольку 2D-движок Unity - это Box2D и физический движок 3D PhysX, поэтому вы не можете смешивать эффекты (например, Rigidbody2D не столкнется с SphereCollider). –

0

Вы должны использовать полевые коллайдеры вместо коллайдеров сетки. Таким образом, вы можете добиться большей производительности. И проверять свойство «Иметь триггер» вашего коллайдера. Также необходимо проверить свойство «кинематического» компонента «Жесткое тело». Таким образом, все игровые объекты в вашей сцене вызывают столкновения друг с другом.

Функция OnTriggerEnter2D() может помочь вам поймать обнаружение столкновений между игровыми объектами в вашей сцене.

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

  • Нет связанных вопросов^_^