инициализация объекта при отпускании кнопки и последующее его обновление - PullRequest
0 голосов
/ 25 ноября 2018

В C ++, используя SFML-фреймворк, я пытаюсь проверить, когда пробел отпущен, затем вычислить трассировку для маркера и затем продолжить рисовать его на экране, но я пытаюсь использовать массив маркеров.Я использую цикл for:

for (int i = 0; i < 5; i++)
{
    if (cl.getElapsedTime().asMilliseconds() >= 50.0f) spacePressed = false;
    if (spacePressed == false && bul[i].fired == false)
    {
        bul[i].moveCtrl(event, deg, spacePressed);
        cl.restart();
    }
 }

Для циклического массива и вызова moveCtrl; примечание: cl - это часы, которые создаются с помощью маркера.Затем в moveCtrl:

bulDeg = deg;
//Sets fired to true if Space bar is pressed
    if (!fired)
    {
        if (event.type == Event::KeyPressed)
        {
            switch (event.key.code)
            {
            case Keyboard::Key::Space:
                fired = true;
                bulDeg = deg;
                bulX = std::cos(bulDeg * (3.14159f / 180.0f)) * bulSpeed;
                bulY = std::sin(bulDeg * (3.14159f / 180.0f)) * bulSpeed;
                spacePressed = true;
                break;
            }
        }
     }

я вычисляю tracetory и устанавливаю spacePressed в true;После 50 миллисекунд, возвращаемых к значению false для другого цикла, функция fired просто используется для функции draw (), чтобы знать, как правильно ее рисовать.Но результаты странные: ничего не происходит, когда я отпускаю пробел, после 5 релизов он работает, но все пули стреляют очень близко друг к другу.Я пытался переоценить его, но, похоже, это не сработало.

...