我在封闭的矩形瓦片 map 中有一个旋转的矩形。 检查播放器(旋转的矩形)是否与图 block map 的矩形之一相交的最佳方法是什么?
如果重要的话,Player 的类型是 sf::Shape
并且 map 的数据在 int
数组中。
最佳答案
SFML
不提供碰撞检测,它只有检查两个轴对齐的矩形是否相交的方法。如果您需要更复杂的东西,则必须自己实现。
如果不需要精确检测,可以用 map 的矩形检测Sprite.getGlobalBounds().intersects(...)
。
如果你想要理想的碰撞检测,你有不止一种选择:
- Pixel perfect Collision .首先检查边界框是否与 map 图 block 相交,然后检查所有非透明像素是否发生碰撞。速度不是很快,但易于实现,可能适合您的情况。
- 数学方法,还有很多,但看看分离轴定理。如果您仅限于使用矩形(或/和圆形和凸多边形),它的效果最好。
关于c++ - 如何检查两个矩形(一个旋转)是否在 SFML 中相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099458/