В 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 релизов он работает, но все пули стреляют очень близко друг к другу.Я пытался переоценить его, но, похоже, это не сработало.