为横向卷轴游戏制作 2D 物理模拟器的方法

本文关键字:模拟器 方法 2D 横向 游戏 | 更新日期: 2023-09-27 18:36:02

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

为横向卷轴游戏制作 2D 物理模拟器的方法

除非你需要玩家推动东西,否则你的意思是只是跳跃,那么像传统的横向卷轴游戏一样实现跳跃很简单。

您可能想要执行以下操作:

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 碰撞检测"或"侧滑车/平台游戏教程"。