1
Graphique / Re: Bug de rotation "smooth"
« le: Mars 17, 2022, 10:02:06 pm »
Alors après une bonne heure à tester pas de mal de choses et en remplaçant les + par des - j'ai finalement réussi à avoir un code qui marche !
Merci beaucoup Talchane pour l'aide
Voici mon code (que je vais compacter par la suite) pour ceux qui veulent:
Merci beaucoup Talchane pour l'aide
Voici mon code (que je vais compacter par la suite) pour ceux qui veulent:
void Player::SetAngle()
{
sf::Vector2i mousePos = sf::Mouse::getPosition(GD->m_window);
//Coordonées de la souris dans le monde
mousePos = (sf::Vector2i)GD->m_window.mapPixelToCoords(mousePos);
float newAngle = atan2f(mousePos.y - m_pos.y, mousePos.x - m_pos.x) * 180 / PI;
float theta = newAngle - m_angle;
if (abs(theta) < 180)
{
m_angle += theta / 10.0f;
}
else
{
if (theta > 0)
{
m_angle -= (360 - abs(theta)) / 10.0f;
}
else
{
m_angle += (360 - abs(theta)) / 10.0f;
}
if (m_angle > 180)
{
m_angle = -180 + (m_angle - 180);
}
else if (m_angle < -180)
{
m_angle = 180 + (m_angle + 180);
}
}
m_hitbox.setRotation(m_angle);
}
{
sf::Vector2i mousePos = sf::Mouse::getPosition(GD->m_window);
//Coordonées de la souris dans le monde
mousePos = (sf::Vector2i)GD->m_window.mapPixelToCoords(mousePos);
float newAngle = atan2f(mousePos.y - m_pos.y, mousePos.x - m_pos.x) * 180 / PI;
float theta = newAngle - m_angle;
if (abs(theta) < 180)
{
m_angle += theta / 10.0f;
}
else
{
if (theta > 0)
{
m_angle -= (360 - abs(theta)) / 10.0f;
}
else
{
m_angle += (360 - abs(theta)) / 10.0f;
}
if (m_angle > 180)
{
m_angle = -180 + (m_angle - 180);
}
else if (m_angle < -180)
{
m_angle = 180 + (m_angle + 180);
}
}
m_hitbox.setRotation(m_angle);
}