Есть такой код управления спрайтом:
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
player.move(0, -Speed * time);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
{
player.move(0, Speed * time);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
player.rotate(-Speed * time);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
player.rotate(Speed * time);
}
Спрайт вращается вокруг своей оси, но кпонки w,s перемещают спрайт не так как надо. Как его перемещать в то направление куда он смотрит? Какие формулы применять? Чтоб было наподобие танков с видом сверху.
Вперед - вот так:
player.move(Speed * time * cos(угол), Speed * time * sin(угол));
Назад - аналогично, только с -Speed вместо Speed.
Здесь угол - это тот угол, который меняется вызовом player.rotate.
Использовать одну и ту же скорость Speed для поворота и движения - слегка странно. Может иметь смысл использовать две отдельные константы.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости