simplify velocityInRandomDIr()

This commit is contained in:
Joseph Aquino 2025-12-02 09:05:40 -05:00
parent 0941089dfa
commit 197a3bcfd5
1 changed files with 4 additions and 15 deletions

View File

@ -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
}