Стрельба из автомата

В этой теме 8 ответов, 2 участника, последнее обновление  saxartom 9 мес. назад.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #3334

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Доброго времени суток) Не подскажете, как можно реализовать “имитацию автоматной очереди”. Получается сделать либо сплошным потоком (на подобии лазера), либо поштучно(как пистолетная стрельба). А вот как сделать, чтобы пули шли непрерывно, пока нажата клавиша стрельбы, но при этом, чтобы была задержка между каждым патроном.

    Заранее спасибо)

    #3336
    +1
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

    Зарегистрирован:
    01.04.2015

    Репутация:139
    #3343

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Спасибо. В “стационарном” положение работает. Но если стрелять “на ходу”, то по какой-то причине, при зажатой клавише стрельбы, он стреляет один – два раза и прекращает. Не подскажете где искать ошибку. Если надо скинуть какой-то сегмент кода – говорите.

    #3344
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

    Зарегистрирован:
    01.04.2015

    Репутация:139

    Хватит болтовни, покажите нам код.

    #3345
    +1

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    You’re God damn right. ))
    Вот упрощенная версия кода:

    main.cpp

    #3349
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

    Зарегистрирован:
    01.04.2015

    Репутация:139

    У вас событийные условия находятся вне обработчика событий.

    Попробуй так.
    Перенеси эти условия в обработчик событий и добавь герою флаг is_Shoot

    #3352

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Сначала я попробовал запихнуть эту конструкцию в обработчик событий:

    Но так пули стали вылетать только по одной за одно нажатие.

    Потом я попробовал реализовать ваш вариант, и пули вообще перестали вылетать.

    Я отследил ход обработки кода, и если во время стрельбы начать двигаться, то прерывается это условие

    и соответственно стрельба прекращается((

    Как я предполагаю условие выше нужно обрабатывать параллельно с ходьбой. Это случайно не в сторону потоков надо копать?

    Или я уже не туда полез?

    #3353
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

    Зарегистрирован:
    01.04.2015

    Репутация:139

    while(window.pollEvent(event))
    {
    if (event.type == Event::MouseButtonPressed) // Если клавиша нажата shoot true
    if (event.type == Event::MouseButtonReleased) // Если клавиша отжата shoot false
    }

    if(shoot == true) timer += time;
    else timer = 0;

    if(timer > 150) стрелять и обнулить таймер

    #3355

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Спасибо, отчасти работает, но почему то при ходьбе по диагонали вверх-вправо и вверх-влево и стрельбе, он идет просто вверх. При ходьбе аналогично по диагонали вниз все нормально.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)

Для ответа в этой теме необходимо авторизоваться.