2D-шутер (икаруга и т. Д.) Действительно играют в пространстве экрана? - PullRequest
3 голосов
/ 25 августа 2011

Извините, если это глупый вопрос, но я начинаю космический перестрелку, как Икаруга и т. Д. ... и заметил, что пули, игроки, враги не двигаются со свитком. Этот тип игр представляет все на экране?

Я имею в виду, что вы можете иметь прокручивающую / вращающуюся среду на заднем плане, но столкновения и т. Д. Только в пространстве экрана?.

Исходя из этого, что вы думаете об этом игровом процессе:

1) Игрок в экранных координатах 2) Враги - это мировые координаты, пока они не пробудятся, в этот момент они преобразуются в экранные координаты (просто используя текущую мировую позицию прокрутки). 3) Пули врага и игрока - это координаты экрана. 4) Если бы у нас были препятствия в мире (скажем, например, в 2D-игре у нас есть плитки, представляющие препятствия), нам пришлось бы преобразовывать пули, врагов, игрока в мир, чтобы проверять столкновения с картой.

Преимущества: - Все, что движется, - это пространство экрана, легко проверять столкновения между динамическими объектами и т. Д. *

Недостатки: - Мы должны преобразовать каждую сущность в мировые координаты, чтобы проверить наличие препятствий.

Иначе можно было бы иметь все в мире и перемещать игрока (звездолет), пули и т. Д. На то же количество перемещенного свитка и применять свою собственную скорость.

Преимущества: -Все это экранная карта / сущности, поэтому конвертация не требуется.

Недостатки: -Мы должны пройти через каждую сущность, чтобы применить исправление к ее положению на основе скорости прокрутки, чтобы имитировать вещи в пространстве экрана.

Как вы думаете, это лучшее решение ?. Я реализую первый прямо сейчас.

Спасибо заранее, HexDump.

1 Ответ

0 голосов
/ 01 сентября 2011

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

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

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

...