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