У меня есть фигура(квадрат для примера):
VertexArray quad(LinesStrip, 5);
quad[0].position = Vector2f(0, 0);
quad[1].position = Vector2f(25, 0);
quad[2].position = Vector2f(25, 25);
quad[3].position = Vector2f(0, 25);
quad[4].position = quad[0].position;
Я создал класс figure и объявил там публичный метод:
VertexArray drawQuad() {
VertexArray quad(LinesStrip, 5);
quad[0].position = Vector2f(0, 0);
quad[1].position = Vector2f(25, 0);
quad[2].position = Vector2f(25, 25);
quad[3].position = Vector2f(0, 25);
quad[4].position = quad[0].position;
return quad;
}
В приватном поле у меня есть переменные:
float x = 0, y = 0;
float moveSpeed = 5;
Еще у меня есть метод для перемещения фигуры по нажатию клавиш:
void move(Event &event) {
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Left)
x -= moveSpeed;
else if (event.key.code == sf::Keyboard::Right)
x += moveSpeed;
else if (event.key.code == sf::Keyboard::Up)
y -= moveSpeed;
else if (event.key.code == sf::Keyboard::Down)
y += moveSpeed;
}
}
И собственно метод для вывода на экран:
void drawQuadWin(RenderWindow &window) {
Transformable trans;
trans.setPosition(500, 500);
trans.move(x,y);
window.draw(drawQuad(), trans.getTransform());
}
Суть проблемы: когда я вызываю 2 метода из класса для отрисовки и движения фигуры, она двигается очень быстро, то-есть при нажатии клавиши вверх, фигура вылетает за границы экрана. Аналогично и с другими направлениями. Но если я не меняя ничего проверну тоже самое в main. В цикле while(window.isOpen())
нарисую выведу и буду двигать фигуру, все будет работать идеально.Как исправить?
Проблема, скорее всего, не в приведённом коде, а в общем цикле отрисовки -- fps слишком большой. Прочитайте классическую статью и попробуйте использовать циклы оттуда https://gafferongames.com/post/fix_your_timestep/
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Разбираясь с устройством ОЗУ пришел к вопросу о реализации string'aПо идее это уже просто стандартная штука, но не смог найти нужной инфы
Какие могут быть подводные камни если сделать глобальный указатель на объект по типу Sensormanager *sensormanager и передать его во второй потокОпределять...
Два скрипта взаимодействуют друг с другом: один написан на React, другой на jQueryВ React-компоненте есть textarea и есть событие onChange, которое изменяет...