0

首先,我想说我正在制作一个 2D 横向滚动视频游戏。游戏使用 C# 编码,框架使用 XNA。我想知道制作基本物理引擎的简单方法是什么,以及放在哪里。我在 XNA 方面的经验并不丰富,但我知道足以制作没有物理的游戏,所以现在我自然希望添加物理(然后将玩家拉下的跳跃功能)。我的目标是最终获得与泰拉瑞亚或超级马里奥相似的物理效果。关于从哪里开始的任何想法?我知道我至少需要一个向量来将播放器拉下来,另一个来将播放器向上推,但据我所知,这就是....

4

1 回答 1

0

除非您需要玩家通过物理推动事物,否则您的意思是跳跃,然后像在传统横向卷轴中那样实现跳跃很简单。

你可能想做这样的事情:

float currentYspeed;
float GRAVITY = 5;
bool playerFlying;

// In Update():
if (isUpArrowKeyDown() && !playerFlying) { playerFlying = true currentYspeed = 50; }
playerY += currentYspeed;
currentYspeed -= GRAVITY;
if (playerCollidesWithFloor())
{
  currentYspeed = 0; // We came back to ground.
  playerFlying = false;
}
else if (playerCollidesWithSomethingElse())
{
  currentYSpeed = 0; // We hit obstacle in-air.
}

当然,您可能想要重构和美化这段代码,使位置和速度的变化取决于经过的秒数等。

如果您不知道如何实现碰撞功能,请考虑阅读关键字“2D 碰撞检测”或“sidescroller/platformer tutorial”。

于 2013-10-21T16:42:55.773 回答