2015-10-13 51 views
1

我在矩形的闭合瓷砖贴图中有一个旋转的Rectangle。 检查玩家(是旋转的矩形)是否与瓷砖地图的矩形之一相交的最佳方法是什么?从游戏里面如何检查两个矩形(一个是旋转的)是否在SFML中相交

图片,以便更好地显示在地图的样子:You can see the player (Blue rect) and the map borders (Red rects). The blue rect must not leave outside the red rectarea

如果它的事项,玩家的类型是sf::Shape和地图的数据是int数组中。

回答

3

SFML不提供碰撞检测,它只有方法来检查两个轴对齐的矩形是否相交。如果你需要更复杂的东西,你将不得不实施自己。

如果您不需要精确检测,则可以使用地图的矩形测试Sprite.getGlobalBounds().intersects(...)。 如果你想要理想的碰撞检测,你有更多的选择:

  • 像素完美的碰撞。首先检查边界框是否与地图平铺相交,并检查所有不透明像素是否存在碰撞。不是很快但很容易实施,可能适合您的情况。
  • 数学方法,还有更多的,但看看分离轴定理。如果你只限于矩形(或/和圆形和凸多边形),它会最好。