XNA 2d街机游戏精灵跟随

时间:2010-12-09 18:05:45

标签: c# xna 2d

我打算像XNA一样制作XNA示例游戏“Platformer1”。但我需要更长的水平,不适合屏幕(如超级马里奥水平)。我该如何管理这种水平?我是否需要使用跟随精灵的2D摄像头?如果我这样做,我怎么能加载水平?我有点困惑,我不确定我能否清楚地解释我的问题。希望有人可以帮忙吗?

5 个答案:

答案 0 :(得分:3)

MSDN中基于Platformer Starter Kit的教程有一个步骤Adding a Scrolling Level,可指导您创建更长的级别。本教程非常详细,我强烈推荐它。

我在XNA Game Studio 4.0部分找不到教程,但差异应该很小。根据页面底部的评论,您需要更改的是替换

spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None, cameraTransform);

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise, null, cameraTransform);

在教程代码中。

答案 1 :(得分:2)

如果你想创建一个侧滚动游戏,那么我会研究视差滚动。快速google / bing将帮助您找到许多教程。此外,另一个有用的提示是搜索YouTube的XNA视频我们有很多海报分享他们的源代码。

以下是微软Parallax Scrolling的链接。

答案 2 :(得分:1)

听起来你面前有一些问题。

  

但是我需要更长的级别才能适应屏幕(如超级马里奥级别)。我该如何管理这种级别。

有几种方法可以做到这一点,但一种相当简单的方法是拥有一个名为Tile的类的2d数组(或稀疏数组,具体取决于您的级别有多大),该类存储有关的信息。平铺图像,动画......等等。

是的,你可能想要一台“相机”。这可以简单到仅绘制该阵列的特定范围,或者使用变换以在您的关卡上缩小和平移的功能更强的相机。

希望这有助于您入门。

答案 3 :(得分:1)

我在XNA中做了大量工作,根据我的经验,有两种绘制2D场景的方法:

1)严格2D。这种方法更容易,但有一些限制。本身没有“相机”,你所做的就是将所有东西都移到固定的2D“相机”下面。我用引号说“相机”,因为相机是固定的(据我所知)。好处是它很容易,缺点是你不能轻易放大或缩小或做其他相机效果。

2)2D 3D。使用2D平面设置3D世界。这更灵活,但使用起来也更具挑战性,因为您需要设置3D世界和3D相机。如果这是你第一次尝试制作游戏,我强烈推荐这种方法。

我真的只熟悉严格的2D方法,你需要一个具有2D坐标的地图对象列表。您还希望存储您正在查看的地图的哪个部分,我使用存储它的Rectangle或Vector2来执行此操作。当角色移动时,该值将向前移动。然后,您可以获取2D地图对象的坐标并减去您正在查看的左上角的(X,Y),以确定对象的屏幕位置。所以:

float screenX = myMapObject.X - focusPoint.X;
float screenY = myMapObject.Y - focusPoint.Y;

另外需要注意的是,使用浮点数或Vector2 / 3存储位置,您可能认为现在不需要它,但它会在线下。

这可能有些过分,但我的SF项目使用XNA绘制一个可以移动的严格2D场景:http://sourceforge.net/projects/asteroidoutpost/

我希望这会有所帮助。

答案 4 :(得分:0)

看看Nick Gravelyns的教程。我刚开始的时候帮助了我 - 真的非常值得在2D游戏中学到很多东西。

所有视频现在都在youtube here