Witam, mam problem z poruszaniem się, takim płynnym, bez przycinania...(nie chodzi mi o płynne w sensie, że takie stopniowe przyśpieszanie/zwalnianie. Mam na myśli po prostu stałe poruszanie się bez ścinek) tak wygląda trochę mojego kodu
//sterowanie
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
player.idz();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
player.change_rotation(5);
}else if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
player.change_rotation(-5);
}
i w player.cpp coś takiego:
void Player::change_rotation(int value)
{
shape.setRotation(shape.getRotation()+value);
}
void Player::idz()
{
float rotacja = shape.getRotation();
vx = sin(( rotacja * 3.14 ) / 180.0f);
vy = -cos(( rotacja * 3.14 ) / 180.0f );
shape.move(speed*vx,speed*vy);
}
i postać się bardzo nienaturalnie porusza, tzn gdy kliknę a/d to robi taki jakby jeden obrót, chwila przerwy i robi ze zmienną prędkością reszte obrotów (w sensie zmiany rotacji) i podobnie z ruchem do przodu, mogę przytrzymać W i postać czasami się wcale nie rusza, po chwili szybko przyśpiesza, zwalnia, zacina się itp. Podczas tworzenia sugerowałem się projektem Szymona Siarkiewicza i albo coś schrzaniłem albo nie wiem... Próbowałem użyć komendy OknoAplikacji.setFrameLimit(); (oknoAplikacji - okno, na którym pracuje) ale to nic nie dało
dorzucam tutaj plik .h
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <SFML/Graphics.hpp>
class Player
{
sf::ConvexShape shape;
float vx, vy;
public:
int speed;
Player();
sf::ConvexShape return_shape();
void idz();
void change_rotation(int value);
};