我正在制作C ++ SFML版本的Frogger,目前正在尝试在青蛙和其他对象(汽车,卡车,原木等)之间实现碰撞检测。我为青蛙和游戏对象设置了单独的类,并希望使用边界框来检测相交,如下所示。

// get the bounding box of the entity
sf::FloatRect boundingBox = entity.getGlobalBounds();
// check collision with another box (like the bounding box of another
entity)
sf::FloatRect otherBox = ...;
if (boundingBox.intersects(otherBox))
{
    // collision!
}


我遇到的问题是,我不知道如何使用来自不同类的两个子画面来完成这项工作,经过几天的搜索,我找不到有关如何执行此操作的说明。

最佳答案

假设有两个对象“ a”和“ b”包含要测试的精灵。
然后,您可以在代码中调用以下代码来测试它们之间的冲突:

#include "MyEntityA.hpp"
#include "MyEntityB.hpp"

MyEntityA entity_a;
MyEntityB entity_b;

if(entity_a.getSprite().getGlobalBounds().intersects(entity_b.getSprite().getGlobalBounds()))
{
    // A collision happened.
}


在此处查找更多信息:https://www.sfml-dev.org/tutorials/2.1/graphics-transform.php#bounding-boxes

10-08 16:21