我写游戏“蛇”,我的身体蛇有问题,即蛇头被保存到列表中
std::list<sf::RectangleShape> listaSnake;
(库SFML)
并且我不知道如何在位置蛇头位置相同的情况下做碰撞。我只知道如何在头部和尾部之间进行碰撞。 我的想法:
auto HeadSnake = listaSnake.front();
auto tail = listaSnake.back();
if (HeadSnake.getPosition().x == tail.getPosition().x && HeadSnake.getPosition().y == tail.getPosition().y) cout << "works!";
答案 0 :(得分:0)
给定sf::RectangleShape
,您可以构建sf::FloatRect
(仅sf::Rect<float>
),然后在两个sf::FloatRect
之间调用sf::FloatRect::intersects
。
举个例子:
sf::RectangleShape a(..);
sf::RectangleShape b(..);
sf::FloatRect a_rect(a.getPosition(), a.getSize());
sf::FloatRect b_rect(b.getPosition(), b.getSize());
if (a_rect.intersects(b_rect)) {
// ...
}