• Create Account

We're offering banner ads on our site from just \$5!

### #ActualCarlows

Posted 29 June 2013 - 10:56 AM

Yeap, me again, lol. The thing is, I'm trying to give my ship an acceleration as if it were moving in space (zero gravity), if a press the Up arrow key, the ship increases its acceleration, change its direction (to the mouse vector), and so forth. There's the code I already have:

sf::Vector2f Nave::getDirection(sf::Vector2f mousePOS, sf::Vector2f playerPOS, float acceleration, sf::Time& delta)
{
sf::Vector2f direction = mousePOS - playerPOS;

direction = direction / sqrt(direction .x * direction .x + direction .y * direction .y) * aceleration;

return direcion;
}

void Nave::update(sf::Time& delta, sf::Vector2f mousePOS)
{
...

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
acceleration += 0.1f;
shipDir = getDirection( mousePOS, shipSprite.getPosition(), aceleration, delta );
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
acceleration -= 0.1f;
}

if( acceleration > 5.0f )
acceleration = 5.0f;
else if( acceleration < 0.0f )
acceleration = 0.0f;

shipSprite.move( shipDir.x, shipDir.y );
shipSprite.setAngle(angle);

...

}

float Nave::Angle( sf::Vector2f playerPOS, sf::Vector2f mousePOS )
{
float angle = atan2(mousePOS.y - playerPOS.y, mousePOS.x - playerPOS.x );
angle = angle * (180/PI);

if(angle < 0)
{
angle = 360 - (-angle);
}

return angle;
}



Of course there's an obvious problem, first, the deceleration, but most important, when I press the Up arrow again, the new vector direction totally f**ks the last direction, there's a video showing the problem:

Since I didn't find solution just looking at google (my poor English makes it harder, I think there aren't too much good gaming forums on Spanish), I'm looking for some help (duh).

Edit1:

there's a really explicit example of what i'm looking for:

### #1Carlows

Posted 28 June 2013 - 10:36 PM

Yeap, me again, lol. The thing is, I'm trying to give my ship an acceleration as if it were moving in space (zero gravity), if a press the Up arrow key, the ship increases its acceleration, change its direction (to the mouse vector), and so forth. There's the code I already have:

sf::Vector2f Nave::getDirection(sf::Vector2f mousePOS, sf::Vector2f playerPOS, float acceleration, sf::Time& delta)
{
sf::Vector2f direction = mousePOS - playerPOS;

direction = direction / sqrt(direction .x * direction .x + direction .y * direction .y) * aceleration;

return direcion;
}

void Nave::update(sf::Time& delta, sf::Vector2f mousePOS)
{
...

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
acceleration += 0.1f;
shipDir = getDirection( mousePOS, shipSprite.getPosition(), aceleration, delta );
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
acceleration -= 0.1f;
}

if( acceleration > 5.0f )
acceleration = 5.0f;
else if( acceleration < 0.0f )
acceleration = 0.0f;

shipSprite.move( shipDir.x, shipDir.y );
shipSprite.setAngle(angle);

...

}

float Nave::Angle( sf::Vector2f playerPOS, sf::Vector2f mousePOS )
{
float angle = atan2(mousePOS.y - playerPOS.y, mousePOS.x - playerPOS.x );
angle = angle * (180/PI);

if(angle < 0)
{
angle = 360 - (-angle);
}

return angle;
}



Of course there's an obvious problem, first, the deceleration, but most important, when I press the Up arrow again, the new vector direction totally f**ks the last direction, there's a video showing the problem: