JavaScript Canvas复杂形状碰撞

时间:2017-06-27 21:44:39

标签: javascript html canvas collision-detection

我正在尝试使用HTML画布和JavaScript制作一个非常简单的游戏。我发现了很多关于检测画布上基本形状碰撞的教程和问题(如矩形和圆形)。但我想知道是否可以检测复杂的形状(由许多基本形状组成的形状)是否与另一个形状碰撞,或者即使两个复杂的形状碰撞也是如此。如果是这样,怎么办呢?提前谢谢!

1 个答案:

答案 0 :(得分:2)

一般算法不会提供比基于每种形状类型的知识更好的解决方案。

通常,对于复杂(即复合)形状,您通常会尝试步骤#1和“退出早期”测试。出于优化原因,您通常会尽可能早地尝试消除误报。

简单的步骤#1是测试每个复合形状的“边界框”上的碰撞。如果边界框不重叠,那么您可以提前退出并假设没有碰撞,因为复合形状不会发生碰撞(参见https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169

如果边界框测试不能及早消除,则需要使用最适合形状的算法(圆圈,圆矩等)依次测试每个子形状,从而将最“昂贵”的测试留给最后 - 像多边形多边形。

您可能还想查看此问题How do I determine if two convex polygons intersect?

相关问题