Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Comment réaliser une collision en pente ?  (Lu 1202 fois)

0 Membres et 1 Invité sur ce sujet

TopNewbie

  • Invité
Comment réaliser une collision en pente ?
« le: Août 18, 2017, 07:07:44 pm »
Salut à tous,

J'aimerais que vous m'expliquiez comment réaliser un système de collision "glissante" de manière à ce que, si j'avance mon point en direction de la ligne et que celui-ci la touche, que mon point "glisse" en allant vers le haut ( si admettons j'appuie sur la flèche droite ) et le vers le bas ( si j'appuie sur la flèche du bas ) ?
Quel calcul mettre en place afin de réaliser cela ? Merci beaucoup.



#include <iostream>

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow win(sf::VideoMode(640,480,32),"Collision Slope", sf::Style::Titlebar);
    win.setFramerateLimit(60);

    sf::VertexArray line(sf::Lines, 2);
    line[0].position = {200,100};
    line[1].position = {100,200};

    sf::CircleShape point(2);
    point.setFillColor(sf::Color::Green);

    sf::Vector2f m_position;
    sf::Vector2f m_intersection;
    float speedPoint = 3.0f;

    while(win.isOpen())
    {
        sf::Event event;
        while (win.pollEvent(event))
        {
            switch(event.type)
            {
            case sf::Event::Closed:
                win.close();
                break;
            case sf::Event::KeyReleased:
                if (event.key.code == sf::Keyboard::Escape)
                    win.close();
                break;
            }
        }

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
        {
            m_position.y-=speedPoint;
        }
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
        {
            m_position.x-=speedPoint;
        }
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
        {
            m_position.y+=speedPoint;
        }
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
        {
            m_position.x+=speedPoint;
        }

        point.setPosition(m_position);
        win.clear();

        win.draw(point);
        win.draw(line);

        win.display();
    }
}
 

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Comment réaliser une collision en pente ?
« Réponse #1 le: Août 18, 2017, 07:29:04 pm »
Salut

Ici tu te trouves sur le forum SFML, on n'est pas censés expliquer les théorie de la détection/réponse de collision  ;)

De toute façon ce n'est pas sur les forums qu'il faut apprendre ce genre de choses, mais avec de bons articles / tutoriels complets, expliquant la théorie et la mise en oeuvre de quelques formules simples via des exemples. Concernant la détection/réponse de collision, les ressources ne manquent vraiment pas.
Laurent Gomila - SFML developer

Guillaume__

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re: Comment réaliser une collision en pente ?
« Réponse #2 le: Août 22, 2017, 01:19:52 pm »
Salut :)

J'ai déjà vu un article traitant de ça sur Meruvia, je ne sais pas s'il correspond parfaitement à ce que tu recherches je ne fais que te diriger vers une source :)

Le lien : Big Tuto SFML 2 - Chapitre 10 : Ajoutons des pentes!

Cordialement G
Rejoignez-nous sur le serveur
Discord SFML

 

anything