SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Стрельба из автомата › Ответ в теме: Стрельба из автомата
Сначала я попробовал запихнуть эту конструкцию в обработчик событий:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if (event.type == Event::MouseButtonPressed) if (event.key.code == Mouse::Left){ if (timer_Bullet > 150.f){ Bullet.push_back(new TBullet(weaponsSprite, "MachineBullet", hero.x, hero.y, hero.anim.anim.sprite.getTextureRect().width, hero.anim.anim.sprite.getTextureRect().height, hero.STATE)); --(static_cast<TWeapons*>(Inventory.inventory[2])->ammo); timer_Bullet = 0.f; } } } else{ hero.shoot = false; if (hero.onHandM) static_cast<TWeapons*>(Inventory.inventory[2])->reloadWeap(hero); } |
Но так пули стали вылетать только по одной за одно нажатие.
Потом я попробовал реализовать ваш вариант, и пули вообще перестали вылетать.
Я отследил ход обработки кода, и если во время стрельбы начать двигаться, то прерывается это условие
C++
1 2 3 4 5 |
if (timer_Bullet > 150.f){ Bullet.push_back(new TBullet(weaponsSprite, "MachineBullet", hero.x, hero.y, hero.anim.anim.sprite.getTextureRect().width, hero.anim.anim.sprite.getTextureRect().height, hero.STATE)); --(static_cast<TWeapons*>(Inventory.inventory[2])->ammo); timer_Bullet = 0.f; } |
и соответственно стрельба прекращается((
Как я предполагаю условие выше нужно обрабатывать параллельно с ходьбой. Это случайно не в сторону потоков надо копать?
Или я уже не туда полез?