Найти в Дзене
Моя игра

Создаю свою игру-первые проблемы

Всем Привет!

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

С какими задачами мне пришлось столкнуться, я описывал в предыдущей статье, поэтому сегодня на этом не буду заострять внимание. Сегодня хотел бы остановиться на проблеме функции createInput(input).

Начну с самого начала создаю обработчик события стрельбы:

-2

Вот собственно сам кусок программы обработки, вначале я смотрю доступно ли оружие М230 или нет, если оно не доступно, то этот кусок кода обрабатываться не будет, а если наоборот, то смотрю есть ли на моем вертолете это оружие. Вначале просматриваю первый слот вооружения, если оно там установлено то передаю управление функции UpdateM230() в ней собственно уже происходит процесс обработки стрельбы, проверка скорострельности, наличие боезапаса и был ли вообще выстрел, может кому любопытно, вот код:

-3

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

Проблема 1.

Началась именно с установки второй пушки М230, то есть я поставил на вертолет 2 пушки М230, в момент стрельбы вертолет начал с бешеной скоростью буквально выплевывать весь боезапас, оказалось что если стоят 2 одинаковых орудия то UpdateM230() вызывается 2 раза, и не важно с какого орудия я стреляю будет происходить двойной расход. Что бы этого не происходило пришлось добавить еще одну процедуру, которая будет отвечать за обработку движения пуль. Теперь UpdateM230() отвечает только за создание пули, а новая процедура UpdateM230puli() отвечает за движение всех пуль орудия М230, вот ее код:

-4

Отлично первая проблема решена запускаю игру, тестирую...

Стреляет замечательно и расход правильный и сразу с 2-х орудий стреляет, в общем все хорошо, но сталкиваюсь с новой проблемой, проблемой функции createInput(input).

Проблема 2.

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

Надо как то исправлять...

Изначально я назначил управление на клавиши W,A,S,D, а стрельбу на NUM1 и NUM3, просто большинство игроков привыкли управлять движением именно этими клавишами. И тут до меня доходит, что будет если на компьютере зажать 3-4 клавиши одновременно? Правильно будет работать какая-то одна, то же происходит и в игре.

Переназначил движение на стрелки... а стрельбу перенес на клавиши которые могут одновременно обрабатываться компьютером - ALT, CTRL, SHIFT - запускаю тестирование, все замечательно вертолет летает и стреляет одновременно из обеих пушек, классно! Ну и по традиции видосик что же у меня получилось:

Всем спасибо за прочтение, подписывайтесь что бы ничего не пропустить.