Всем Привет!
Итак продолжаю творить и писать. Сегодня попытался немного разнообразить процесс и добавить на "апач" второй слот для вооружения.
С какими задачами мне пришлось столкнуться, я описывал в предыдущей статье, поэтому сегодня на этом не буду заострять внимание. Сегодня хотел бы остановиться на проблеме функции createInput(input).
Начну с самого начала создаю обработчик события стрельбы:
Вот собственно сам кусок программы обработки, вначале я смотрю доступно ли оружие М230 или нет, если оно не доступно, то этот кусок кода обрабатываться не будет, а если наоборот, то смотрю есть ли на моем вертолете это оружие. Вначале просматриваю первый слот вооружения, если оно там установлено то передаю управление функции UpdateM230() в ней собственно уже происходит процесс обработки стрельбы, проверка скорострельности, наличие боезапаса и был ли вообще выстрел, может кому любопытно, вот код:
Затем по аналогии с проверкой первого слота, проверяю второй, если происходит выстрел из первого или второго орудия управление передается , и далее на функцию рендера изображения...
Проблема 1.
Началась именно с установки второй пушки М230, то есть я поставил на вертолет 2 пушки М230, в момент стрельбы вертолет начал с бешеной скоростью буквально выплевывать весь боезапас, оказалось что если стоят 2 одинаковых орудия то UpdateM230() вызывается 2 раза, и не важно с какого орудия я стреляю будет происходить двойной расход. Что бы этого не происходило пришлось добавить еще одну процедуру, которая будет отвечать за обработку движения пуль. Теперь UpdateM230() отвечает только за создание пули, а новая процедура UpdateM230puli() отвечает за движение всех пуль орудия М230, вот ее код:
Отлично первая проблема решена запускаю игру, тестирую...
Стреляет замечательно и расход правильный и сразу с 2-х орудий стреляет, в общем все хорошо, но сталкиваюсь с новой проблемой, проблемой функции createInput(input).
Проблема 2.
Если я пользуюсь 1-м орудием то вертолет летает и стреляет замечательно, как только я начинаю стрелять 2-мя орудиями одновременно он останавливается как вкопанный и стреляет из обоих пушек, это очень критично, ведь может быть ситуация в игре - уходит игрок из под обстрела врага одновременно отвечая ему мощной контратакой из обоих орудий и тут вертолет останавливается как вкопанный и игрока тупо расстреливают в упор...
Надо как то исправлять...
Изначально я назначил управление на клавиши W,A,S,D, а стрельбу на NUM1 и NUM3, просто большинство игроков привыкли управлять движением именно этими клавишами. И тут до меня доходит, что будет если на компьютере зажать 3-4 клавиши одновременно? Правильно будет работать какая-то одна, то же происходит и в игре.
Переназначил движение на стрелки... а стрельбу перенес на клавиши которые могут одновременно обрабатываться компьютером - ALT, CTRL, SHIFT - запускаю тестирование, все замечательно вертолет летает и стреляет одновременно из обеих пушек, классно! Ну и по традиции видосик что же у меня получилось:
Всем спасибо за прочтение, подписывайтесь что бы ничего не пропустить.