【问题标题】:Ways to make a 2D physics simulator for a side scrolling game为横向滚动游戏制作 2D 物理模拟器的方法
【发布时间】:2013-10-28 17:18:11
【问题描述】:

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

【问题讨论】:

  • 在codeplex或Github上启动,找到现有的引擎,有很多。当然,直到您的目标是学习如何构建物理引擎。
  • 我的目标是构建一些轻量级和一些简单的东西。我不想花几天时间来构建它。即使我知道我可以很容易地做到这一点。我查看了谷歌,我真正能找到的只是物理引擎,它们非常庞大且集成起来相当复杂。
  • 网上有很多游戏引擎和物理教程。他们是开始这种努力的更好地方。然后,当遇到 实际 问题(没有现有问题)时,发帖到 SO 会更合适。
  • 我现在将尝试使用它作为物理引擎的基础。 gamedev.tutsplus.com/tutorials/implementation/…
  • 根据您的说法,您不想花几天时间来构建一些东西,我想您需要 MagicGameMaker。您只需下载模型和音乐,然后将所有内容放在一起就是这个应用程序......点击几下,瞧!

标签: c# xna physics-engine


【解决方案1】:

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

你可能想做这样的事情:

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”。

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多