平台游戏:角色下降过快

时间:2016-03-20 00:54:17

标签: c# xna

好的,所以我有这个平台游戏,有块和熔岩,还有一个角色。请记住,我是一个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循环,但是解决方法是什么。

2 个答案:

答案 0 :(得分:1)

在碰撞检测阶段,大多数游戏不会像重力那样移动玩家。而是在碰撞检测循环之前将玩家向下移动。然后,如果在你的碰撞检测过程中,你发现他正在与某物发生碰撞,请将他向后移动,直到他不再碰撞为止。

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

答案 1 :(得分:0)

这段代码何时被调用?

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

此外,"位置"?这是你的球员位置吗?如果是,那么对于blocks中的每个块,它的Y值将增加G.因此,blocks集合中的块越多,您的播放器就会越快。