与 2D 精灵对象和所涉及的数学碰撞



我是该网站的新手,决定创建一个帐户,因为我在掌握 2D 环境中的碰撞概念时遇到了问题。

拥有的是一组从自上而下的角度出发的道路精灵,我正在尝试设置与它们碰撞的规则,这样如果玩家偏离道路,他就会结束游戏。

到目前为止,我已经为一条直路制定了规则,你可以在这里看到:

if ((*it)->getType() == ST_RoadStraight)
    {
        Road* road = (Road*)*it;
        // Check to see if the road sprite is within 16 pixels of the bucket either way
        int dx = road->getPosition().x - Pos.x;
        if (dx < 0) dx = -dx;
        if (dx > 200)
        {
            outOfBounds = true;
        }
    }

基本上,我说如果玩家在x轴上走一定距离,它就会结束游戏。对于上下或左右的直线道路来说,这很好,因为我可以将 i 更改为 y 轴,但我也有弯曲的道路。以下是资产情况的想法:

直:https://i.stack.imgur.com/mThJH.png

弯曲:https://i.stack.imgur.com/Nr0EI.png

基本上,我需要玩家能够沿着道路或允许的地方走,但如果他撞到他会偏离公路的边缘,我需要这么说。这在直线道路上很容易,但根据玩家在弯曲道路上的位置,例如 Y 上的 30 像素高在道路的某个部分可能没问题,但在另一部分就不行了。

从本质上讲,我正在寻找某种方程式,以便为我的游戏准确地表示这一点。

任何帮助将不胜感激。

有什么

理由不能使用精灵套件吗?

对于二维碰撞检测,我建议您使用 Box2D 物理引擎。在果酱中很容易设置并提供准确的结果。我已经在我的许多果酱游戏中使用它。marmalade的github帐户中有一个box2D扩展。看看吧。

最新更新