我正在制作HTML5和Javascript平台游戏。此时,地图上的所有块都作为正方形处理。当方块不是精确的正方形/长方形时,此方法是“丑陋的”。如何检测与曲线的碰撞
检查这个形象我做获得更好的理解我的观点:
案例一:的“底部保险杠”是触摸该envolves所以运动停止块正方形。
案例二:如果我使用与上面相同的方法,当玩家跳跃时,在“顶部保险杠”甚至接触到该块之前停止移动。
我应该如何接近情况下,两个?我知道我必须检查“Top Bumper”是否碰撞或者在曲线和其他2个边缘之间的区域内。
该曲线如何?如何根据块坐标(x,y)和尺寸(宽度,高度)为其生成函数。
注意:我想避免检查曲线每一点的碰撞,因为这对于CPU来说是非常昂贵的。
我喜欢这个问题。你如何生成曲线(和其他边界)?它们是图像还是由数学函数创建的?您期望使用多少种不同的块? –
@ChadMcGrath嘿,谢谢你的回复。我想使用大约10-15个不是完美的正方形/长方形的不同块。我正在使用图像PNG,但我也有这种图像(SVG),我不使用的矢量版本。 –
有一些代码用于检测与贝塞尔曲线的碰撞,这是svg用来生成它们的原因。基本上,它看起来像从函数的导数中找到最小/最大值。不知道是否还有一个JavaScript库,但如果你的SVG路径没有太多的部分,我认为这是非常可行的,取决于你在屏幕上有多少曲线(你的一个图像看起来只有1条曲线)。锯齿状的,我们可以检测线段。我们也可以通过仅查找与边框相撞的物体来作弊。 –