如何为侧滚动游戏制作2D物理模拟器

时间:2013-10-20 03:57:52

标签: c# xna physics-engine

首先,我想说我正在制作2D侧滚动视频游戏。游戏用C#编码,框架用XNA编写。我想知道什么是一个简单的方法来制作一个基本的物理引擎可能是什么,以及在哪里放置它。我对XNA的体验并不广泛,但我知道足以制作一个没有物理的游戏,所以现在我希望添加物理(跳跃功能然后将玩家拉下来)。我的目标是结束与Terraria或Super Mario相似的物理学。关于从哪里开始的任何想法?我知道我至少需要一个向量来拉动玩家,另一个向上推动玩家,但这就像我所知道的那样....

1 个答案:

答案 0 :(得分: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教程”。