0

我是该站点的新手,并决定创建一个帐户,因为我在掌握 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 轴,但我也有弯曲的道路。以下是资产的概念:

直:http: //i.imgur.com/bNHYwZO.png

弯曲:http: //i.imgur.com/ppPw7ED.png

基本上,我需要玩家能够沿着道路前进或穿过它允许的地方,但是如果他碰到了他会偏离道路的边缘,我需要这么说。这在直道上很容易,但取决于玩家在弯曲道路上的位置,例如在 Y 轴上 30 像素高的位置在道路的某个部分可能还可以,但在另一部分则不行。

本质上,我正在寻找某种等式,以使我的游戏能够准确地表示这一点。

任何帮助,将不胜感激。

4

2 回答 2

0

有什么理由不能使用Sprite Kit吗?

于 2013-09-29T18:43:24.970 回答
0

那么对于二维碰撞检测,我建议您使用 Box2D 物理引擎。在 Marmalade 中很容易设置并给出准确的结果。我在很多果酱游戏中都使用过它。marmalade 的 github 帐户中有一个 box2D 扩展。看看它。

于 2013-09-30T07:26:52.710 回答