Справедливый 2d игровой арбитраж столкновения движения - PullRequest
2 голосов
/ 06 декабря 2010

Я пытаюсь создать «честную» систему обнаружения столкновений для 2d спрайтовой игры, но я нахожу это более сложным, чем я первоначально ожидал.Под «честным» я подразумеваю, что ни одному подвижному объекту не предоставляется приоритет движения перед другим в одном обновлении игры:

например, A -> 50px <- B (если b и a имеют равные скорости, каждый из нихперед столкновением и остановкой следует переместиться на 25 пикселей) </p>

В отличие от жадных алгоритмов, которые могут сначала просто переместить A, а затем отменить движение B, поскольку A уже существует.

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

например (показаны только скорости).

     B
     |
     |<--C 
A--> v

Где объекты A, B и C могут различатьсяразмеры

В принципе, я ищу идеи о том, как подойти к этой проблеме.Мой нынешний подход стал слишком сложным, и я заинтересован в обсуждении некоторых других подходов, о которых я даже не думал.

1 Ответ

1 голос
/ 06 декабря 2010

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

...