if(wIsPressed){
movement.x += sin((player.getRotation() * 3.141592654)/ 180) * .5; //accelerates ship at a rate of 0.5 ms^2
movement.y -= cos((player.getRotation() * 3.141592654)/ 180) * .5; //accelerates ship at a rate of 0.5 ms^2
}
else if(abs(movement.x) > 0 || abs(movement.y) > 0){
double angle = (atan2(movement.x, movement.y) * 3.141592654)/180; //finds angle of current movement vector and converts fro radians to degrees
movement.x -= sin((angle)) * 0.5; //slows down ship by 0.5 using current vector angle
movement.y += cos((angle)) * 0.5; //slows down ship by 0.5 using current vector angle
}
В основном, что происходит после использования этого кода, так это то, что мой корабль тянут прямо вниз в нижней части экрана и действует как земля с гравитацией, и я не понимаю, что делаю неправильноSFML atan2 Функция и торможение
Вы не преобразовывая свой угол в градусы правильно. Это должно быть: double angle = atan2 (movement.x, movement.y) * 180/3.141592654; – Julian
делает atan2 возвратом радианов или градусов? – user3500457
Все триггерные функции ожидают и возвращают радианы. – Julian