Hi dudes,
I've searched for several days now and did'nt find anything. I'm writing an asteroids-like game (classic and extended version) and I'm stuck at Game Input. My Gameloop follows the instruction from http://www.koonsolo.com/news/dewitters-gameloop/ .
All is working fine, gameloop,interpolation movement. But if I want to fly my ship away from those nasty asteroids and start shooting another the input stucks at two keys. So I can accelerate and rotate, or accelerate and shoot, or rotate and shoot. But not accelerate,rotate and shoot at the same time.
I'm using SFML 2.1(config.hpp) on Linux Mint 17.1. I query the keys by using
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
// rotate
}
Can someone help me to figure out the problem?
regards
CptnRoughnight
My bad..
here's the code:
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
rotangle += rotspeed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
rotangle -= rotspeed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
speed += acc;
if (speed>maxspeed)
speed=maxspeed;
// when the user wants to move forward:
radangle = rotangle * M_PI / 180;
vel_x += cos( radangle ) * acc * 1.0f;
vel_y -= sin( radangle ) * acc * 1.0f;
totalvelocity = sqrt( (vel_x*vel_x) + (vel_y*vel_y) );
if( totalvelocity > maxspeed )
{
// ship is moving too fast. Scale the velocity down
vel_x *= maxspeed / totalvelocity;
vel_y *= maxspeed / totalvelocity;
}
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
vel_x *= brake;
vel_y *= brake;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
{
// bullets abfeuern
if (starttime+wpDelay < GetTicks())
{
starttime = GetTicks();
Bullet *dummy = new Bullet(this->posx,this->posy,this->vel_x,this->vel_y,this->rotangle);
bullets->push_back(*dummy);
delete dummy;
}
}