Napisałem skakanie i kolizję w ten sposób:
velocity.x = velocity.y = 0;
jumpIsActive = false;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
velocity.x += moveSpeed;
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
velocity.x -= moveSpeed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
if(ableToJump)
{
currentAcceleration.y += jumpAcceleration.y;
velocity.y += currentAcceleration.y;
inAir = true;
onGround = false;
jumpIsActive = true;
if(currentAcceleration.y < maxAcceleration.y)
{
currentAcceleration.y = 0;
jumpIsActive = false;
ableToJump = false;
}
}
}
if(!jumpIsActive)
velocity.y += acceleration.y;
Gdy spadnie na kafel ustawiane sa takie parametry:
onGround = true;
inAir = false;
jumpIsActive = true;
ableToJump = true;
Podstawowe ustawienia zmiennych są takie:
jumpAcceleration.y = -100;
jumpAcceleration.x = 0;
currentAcceleration.x = 0;
currentAcceleration.y = 0;
maxAcceleration.x = 0;
maxAcceleration.y = -900;
Wszystko działa bardzo nierealistycznie, jakbyście to poprawili?
chciałbym stworzyć coś co działa realistycznie, i elastycznie by można było zrobić np. double jump.