Хорошие 2D ссылки ответа коллизии

Эй, я в настоящее время ищу различные методы реализации ответа коллизии в 2D видеоиграх, что-то подобное этой учебной Метасети имеет: N Учебное руководство я надеюсь реализовывать что-то в XNA, но любой язык был бы прекрасен. Я больше интересуюсь реализацией программно, чем фактическая теория. Я предпочел бы больше новичка дружественный материал, но я действительно приветствую больше тем усовершенствования.

Таким образом, кто-то мог предложить некоторые хорошие 2D статьи/книги ответа коллизии?

(PS: мне больше интересно в ответ, чем обнаружение),

16
задан Jeff 15 July 2010 в 00:13
поделиться

6 ответов

Учебное пособие N , которое вы уже упомянули, является отличным ресурсом для начала. Я также рекомендую очень хорошую статью Обнаружение столкновений 2D-полигонов . Он поставляется с отличной реализацией C # и примером для обнаружения столкновений многоугольников с использованием теоремы о разделении оси и лучше объясняет некоторые концепции.

Что касается реакции на столкновение, это зависит от сценария. Для игр вы можете проверить возможное столкновение на основе текущей скорости , а затем просто отрегулировать фактическую скорость, чтобы предотвратить столкновение. Вы также можете реализовать своего рода эффект «отскока». В любом случае он, скорее всего, будет регулировать как скорость, так и направление объекта.

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

15
ответ дан 30 November 2019 в 22:37
поделиться

Мне очень нравится этот, он появился только неделю назад, и это все, что вы могли бы захотеть, кроме релятивистских эффектов:

http://www.amazon.com/Physics-Game-Programmers-Grant-Palmer/dp/159059472X

3
ответ дан 30 November 2019 в 22:37
поделиться

Физические движки очень сложны. Вам будет гораздо лучше использовать существующий.

  • Farseer (C#, получен из старой версии Box2D).
  • Box2d (C++, имеет привязку к .NET)
  • Chipmunk (C, не думаю, что у него есть порт C#, но вы можете его сделать).

Если вы хотите использовать физику в своей игре, используйте Farseer, или привязку Box2D. Если вы хотите изучить физику, подумайте о создании C#-порта Box2D или Chipmunk. Если вам просто интересно, весь их код с открытым исходным кодом.

0
ответ дан 30 November 2019 в 22:37
поделиться

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

Вам нужно беспокоиться о вращении объекта? Затем вам нужно позаботиться о плечах рычага, угловом моменте, моментах инерции и крутящих моментах.

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

А как насчет фрикционных эффектов? Затем вам понадобятся коэффициенты трения или, возможно, скоростные модели сопротивления воздуха.

Гравитационные эффекты? Электромагнитные эффекты? Другие силы?

1
ответ дан 30 November 2019 в 22:37
поделиться

Если вам нужен базовый ответ для ответа на столкновение, вот он:

for each pair of objects that collide
    ask gently to the collision detection lib their interpenetration distance
    Apply an impulse (i.e. a force in the duration of the frame) to both objects :
        force proportional to penetration depth (you will have to tune the coef by hand)
        direction : perpendicular to the collision normal.
        application point : the collision point (approximately, since it s not a point anymore but a volume)
integrate (Euler, Verlet, )\
1
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: