平台游戏:角色掉得太快

Platformer Game: Character Falling Too Fast

好的,所以我有这个平台游戏,有方块和熔岩,还有一个角色。请记住,我只有 13 岁,对 C# 不是很熟悉(我已经使用 C# 和 .NET 大约 8 个月了)。这是我用于检测块的代码:

bool onGround = false
const int G = 5;
foreach (Block block in blocks)
{
      while (!(characterRectangle.Intersects(block.Rectangle)))
      {
          location.Y += G;
          break;
      }

      onGround = characterRectangle.Intersects(block.Rectangle);
}

问题?角色掉得太快了。方块越多,下落的速度越快。现在,我知道这是因为 foreach 循环,但解决这个问题的方法是什么。

在碰撞检测阶段,大多数游戏不会像重力一样将玩家向下移动。相反,在碰撞检测循环之前将玩家向下移动。然后,如果在您的碰撞检测期间,您发现他正在与某物发生碰撞,请将他向后移动,直到他不再碰撞。

查看 http://gameprogrammingpatterns.com/contents.html,一个金矿 :)。

何时调用此代码?

我注意到的第一件事: "while" 循环或多或少是无用的,因为你总是调用 break;。这将退出 while 循环。您也可以使用 "if" 子句。

此外,"location"是什么?这是您的播放器位置吗?如果是,那么对于 blocks 中的每个块,它的 Y 值将增加 G。因此,blocks 集合中的方块越多,您的玩家掉落得越快。