2011-03-11 5 views
1

Я работаю над игрой, где физика очень проста. Мне просто нужно определить, когда мяч (точка) попадает на стену (сегмент линии). Нет силы тяжести, никакого трения, и столкновения совершенно эластичны.Is Chipmunk overkill для простого обнаружения столкновения?

Я уже написал код обнаружения столкновений, но я собираюсь внести некоторые существенные изменения в проект, так что есть возможность заменить все это библиотекой физики Chipmunk. Это хорошая идея?

С одной стороны, Бурундук будет более проверен и оптимизирован, чем мой собственный код, и мне не придется выполнять работу по его поддержанию.

С другой стороны, возможно, бурундук будет в моем случае менее производительным, поскольку он был разработан для поддержки множества функций, которые я не буду использовать.

Я надеюсь, что кто-то, более знакомый с Бурундука, избавит меня от усилий по профилированию или чтению кода, чтобы сделать это определение.

+0

Расчет расстояния между точкой и линией супер-легкий, так что если это все, что вам нужно, вы можете также просто закодировать сами - это было бы намного легче, чем изучение нового API. –

ответ

3

Единственное реальное преимущество Бурундука было бы здесь, если вы сталкиваетесь с этим шаром (или множеством шаров) против многих стен, поскольку он использует пространственный указатель, чтобы проверять только столкновения объектов, которые находятся рядом друг с другом. Это означает, что вы можете масштабировать до сотен или тысяч объектов, не замедляя сканирование, но не имеет никакого реального преимущества, если у вас есть только десяток объектов в сцене.

Похоже, то, что вы реализовали до сих пор, прекрасно подходит для ваших нужд. «Если это не сломано, не исправить это», это хорошее правило. С другой стороны, было бы очень легко реализовать одно и то же в Chipmunk. Если вам нужен опыт и возможность масштабируемости взамен для беспокойства зависимости, пойдите для этого, я думаю.

  • Скотт (бурундук физики парень)
+1

Пространственный хэш? Я продаюсь! Вы правы, это не сломано/не исправить, но моя кишка говорит, что если я не переключусь сейчас, я, вероятно, завершу это позже. Благодаря! – benzado

0

Это действительно сводится к тому, что вы хотите. Я не использовал сам бурундук, но из того, что это звучит, я бы сказал, что вам действительно не нужна полная библиотека физики.

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

1

Я нашел, что Бурундук невероятно прост в использовании, я бы рекомендовал его всем, кто начал 2D-проект. Я не могу ответить на вопрос о производительности, не зная вашего кода. Я знаю, что он использует пространственный хеш для определения конфликтов, он может в конечном итоге сделать меньше тестов на столкновение, чем ваш код. (С другой стороны, если есть очень небольшое количество шаров и стен, это может не быть проблемой).

Это с открытым исходным кодом, поэтому еще одна возможность - использовать Бурундук, но удалить все функции, которые вам не нужны - гравитация, трение, моменты инерции и т. Д. Опять же, трудно сказать, что это хороший вариант не зная точно, что вы уже реализовали.