simplify velocityInRandomDIr()
This commit is contained in:
parent
0941089dfa
commit
197a3bcfd5
|
|
@ -16,31 +16,20 @@ sf::Vector2f getOverlap(const sf::FloatRect first, const sf::FloatRect second)
|
|||
|
||||
sf::Vector2f velocityInRandomDir(const float speed_in)
|
||||
{
|
||||
const bool upOrDown{(bool)Random::get(0,1)};
|
||||
const bool leftOrRight{(bool)Random::get(0,1)};
|
||||
|
||||
// get angle within certain ranges so that the ball does not
|
||||
// start moving straight side to side or up and down
|
||||
if (upOrDown && leftOrRight)
|
||||
{// up left
|
||||
if (leftOrRight)
|
||||
{// left
|
||||
const sf::Angle angle = sf::degrees((float)Random::get(220, 255));
|
||||
return sf::Vector2f{speed_in * std::cos(angle.asRadians()), speed_in * std::sin(angle.asRadians())};
|
||||
}
|
||||
else if (upOrDown && !leftOrRight)
|
||||
{// up right
|
||||
else if (!leftOrRight)
|
||||
{// right
|
||||
const sf::Angle angle = sf::degrees((float)Random::get(285, 315));
|
||||
return sf::Vector2f{speed_in * std::cos(angle.asRadians()), speed_in * std::sin(angle.asRadians())};
|
||||
}
|
||||
else if (!upOrDown && leftOrRight)
|
||||
{// down left
|
||||
const sf::Angle angle = sf::degrees((float)Random::get(105, 130));
|
||||
return sf::Vector2f{speed_in * std::cos(angle.asRadians()), speed_in * std::sin(angle.asRadians())};
|
||||
}
|
||||
else if (!upOrDown && !leftOrRight)
|
||||
{// down right
|
||||
const sf::Angle angle = sf::degrees((float)Random::get(30, 75));
|
||||
return sf::Vector2f{speed_in * std::cos(angle.asRadians()), speed_in * std::sin(angle.asRadians())};
|
||||
}
|
||||
|
||||
return {0,0};// means something went wrong
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue