Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Gama31

Pages: [1]
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 ;D

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);
}
 

2
Graphique / Bug de rotation "smooth"
« le: Mars 16, 2022, 11:03:18 pm »
Bonjour à tous, :D

Après avoir cherché un peu partout sur internet je n'ai toujours pas trouvé de solution à un problème concernant la rotation de mon joueur.
Dans mon jeu, j'essaye de faire en sorte que mon joueur se tourne doucement vers ma souris.

Voici le code pour calculer l'angle de mon joueur:
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;

        m_angle += (newAngle - m_angle) / 10.0f;

        m_hitbox.setRotation(m_angle);
}
 

Voici un exemple visuel du type de rotation que je veut faire:
https://youtu.be/ciT_jDol9G8?t=186

Mon code marche bien sauf quand mon joueur est orienté vers la gauche puisque dans la sfml l'angle vers la gauche vaut -180 ou 180 selon le côté où l'on se trouve.
Ce qui fait que quand mon joueur veut passer, par exemple, de -175 à 175 (donc une rotation de 10 degrés dans mon cas) il fait tout le tour.

J'aimerais savoir comment régler ce problème merci d'avance ! ;D

Pages: [1]