我是该站点的新手,并决定创建一个帐户,因为我在掌握 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 像素高的位置在道路的某个部分可能还可以,但在另一部分则不行。
本质上,我正在寻找某种等式,以使我的游戏能够准确地表示这一点。
任何帮助,将不胜感激。