Я создаю 2D-шутер с боковой прокруткой, и у меня возникли небольшие проблемы с обнаружением столкновения для пуль. Все, включая маркеры, являются объектами со своими собственными полигонами / методами обновления.
Проблема в том, что пули идут быстро, и со скоростью 60 кадров в секунду (что и происходит в игре) пуля будет часто пропускать сквозь стену - поскольку она движется больше ширины стены в течение интервала обновления - и продолжайте счастливо идти своим путем, так как многоугольники никогда не будут перекрываться.
Что я могу сделать по этому поводу? Единственное, что мне удалось придумать, - это нарисовать линию из старой позиции в новую и выполнить обнаружение столкновения, но рисование линий для обнаружения столкновения рекомендуется в документации slick2d. Как я могу решить это?
источник
Ответы:
Стандартные подходы (выбрать один):
Впрочем, вместо этого вы можете смоделировать ваши пули как лучи - если это соответствует внешнему виду вашей игры, как в left4kdead . Таким образом, вам не нужно приближать пули к лучам, потому что они уже являются лучами. С точки зрения внешнего вида, это может выглядеть прилично, если вы рисуете линию с более ярким пятном на конце пули, или просто рисуете линию как градиент от светлого (конец пули) к темному (хвостовой конец), создавая видимость движение.
Я бы согласился с тем, что в большинстве случаев использование графики для обнаружения столкновений немного ошибочно, однако идеальное обнаружение столкновений с точностью до пикселя - именно это и является принятой техникой. Я думаю, все зависит от того, чего вы хотите достичь и как быстро. Если вам не нужна очень быстрая игра с множеством тел + действий, сделайте это. Еще лучше использовать один из подходов, которые я изложил выше.
источник
Если вы хотите, чтобы ваши пули вели себя как реалистичные физические объекты (например, ваши пули больше похожи на стрелы или камни из катапульты, чем на пушечный выстрел), то вы также можете попытаться увеличить частоту обновлений своей физики.
Таким образом, хотя ваша игра может работать со скоростью 60 кадров в секунду, физическая симуляция может работать со скоростью 120 обновлений в секунду (вот повсеместная статья об исправлении временного шага, в которой объясняется хорошая настройка физики, которая может работать с другой скоростью, чем цикл рендеринга).
Конечно, увеличение интервала обновления физического движка увеличит нагрузку на процессор. Таким образом, этот подход имеет смысл, только если ваши снаряды не очень быстро движутся (что я и предполагал, поскольку вы можете сказать, что ваши снаряды движутся по дуге).
источник