【问题标题】:XNA Tile Mapping Platformer?XNA平铺映射平台?
【发布时间】:2011-10-18 11:43:56
【问题描述】:

刚开始大学攻读计算机科学和游戏开发学位。正在研究使用平铺映射制作 2D 平台游戏。显然,2D 平台游戏的一个特点就是比屏幕更大的世界,例如《超级马里奥兄弟》、《塞尔达传说》等。

我想知道如何做到这一点。我已经使用一组纹理设置了一个平铺贴图,但现在我被困住了:

  1. 当玩家在 y = 0 或 x = screenWidth 的图块中然后向上或沿一点滚动时,您如何编写代码?
  2. 如何在所有这些中绘制玩家? (使用基本的正方形,直到我弄清楚了,然后我让艺术家排队画一些东西)

任何帮助都会很棒。此类问题的大多数答案都建议使用引擎,但我确实想这样做,所以请不要建议。

编辑:另外,是的,我看过平台游戏入门工具包。没想到真的帮了大忙?我需要一些解释以及代码,并且注释不是很好。

【问题讨论】:

    标签: c# xna


    【解决方案1】:

    我喜欢采用面向对象的方法来解决这类问题。

    您提到了要绘制的瓷砖网格(您的世界)。我假设您也将使用它来进行碰撞,但没有提到,所以我将忽略它。

    你还提到你需要一个球员(如果你愿意的话,一个马里奥)。这需要在你的世界中占有一席之地。

    我会有两节课。一个适合你的玩家,在 world 坐标(不是相对坐标)中有一个位置。然后我会有一个描述世界瓷砖的类(你的瓷砖地图)。然后,您可以根据它们的世界坐标绘制图块,并通过某种相机矩阵(平移矩阵,用于偏移世界视图)进行转换。这里的想法是移动相机,而不是移动世界。您可以使用相同的相机变换矩阵来绘制玩家。

    由于玩家不知道自己正被摄像头注视,因此摄像头需要知道要跟随什么。因此,相机应该需要“跟随”玩家。你可以给相机一个“目标”坐标,相机可以有规则来跟随玩家。

    然后,相机可以确定是否需要更快或更慢地“滚动”以跟上玩家的步伐。相机需要能够确定玩家是否被绘制在屏幕边缘附近,并朝该边缘移动。等等。

    我希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      您应该跟踪一些 scrollPositionX 和 scrollPositionY 来偏移您正在绘制的图块。使用一种简单的滚动方法(一次 1 个整个图块),您可以在绘制地图时将 scrollPositionX 添加到列索引,并将 scrollPositionY 添加到数组引用的行索引。当玩家移动到边缘附近时,增加或减少 scrollPositionX 和 scrollPositionY。我建议跟踪玩家在地图上的绝对位置,而不是玩家在屏幕上的位置。所以如果scrollPositionX == playerX,这意味着玩家在第一列,你应该减少scrollPositionX。

      【讨论】:

        【解决方案3】:
        1. 我所做的是保留 4 个变量来定义相机边界。如果玩家相对于相机超出了这些边界并且正在移动,则向适当的方向滚动。我所说的相对于相机的意思不是玩家在世界空间中的实际坐标,而是在屏幕空间中。如果需要进一步澄清,请说出来。

        2. Spritebatches 将成为您的朋友!将这些与 texture2D 实例结合起来,您就可以设置好了。

            SpriteBatch batch = new SpriteBatch();
            Texture2D mySprite = Content.Load<Texture2D>("mySprite");
          
            batch.begin();
            batch.draw(mySprite, x, y, width, height); //not sure about these parameters, double check them!
          
            batch.end();
          

        把这些东西封装成一个类,方便管理!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-30
          相关资源
          最近更新 更多