首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XNA地砖测图平台?

XNA地砖测图平台?
EN

Stack Overflow用户
提问于 2011-10-18 11:43:56
回答 3查看 1.7K关注 0票数 2

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

我在想该怎么做。我已经用一个纹理数组设置了一个平铺地图,但是现在我被困在了:

  1. ,你如何编码,当播放器在y=0或x= screenWidth的瓷砖中时,然后向上滚动或沿着一点滚动?
  2. ,如何在所有这些中绘制播放器?(使用基本方格,直到我弄清楚这一点,然后我有一个艺术家排队画一些东西)

任何帮助都会很好。关于这些问题的大多数答案都建议使用引擎,但我做的不是想要这样做,所以请不要建议它。

编辑:还有,是的,我看了一下平台入门工具包。我不觉得这真的有多大帮助?我需要一些解释和代码,它不是很好的注释。

EN

回答 3

Stack Overflow用户

发布于 2011-10-18 15:14:15

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

你提到你要画的瓷砖格(你的世界)。我想你也会用它来碰撞,但是没有提到,所以我会忽略它。

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

我要上两节课。一个给你的玩家,有一个位置在世界坐标(而不是相对坐标)。然后,我将有一个类来描述世界的瓷砖(你的瓷砖地图)。然后,您可以根据它们的世界坐标绘制瓷砖,由某种类型的相机矩阵(用于抵消世界视图的转换矩阵)进行转换。这里的想法是移动相机,而不是移动世界。你可以用同样的相机变换矩阵来画玩家。

因为玩家不知道他正被摄像机盯着,所以摄像机需要知道该怎么做。因此,相机应该需要“跟随”玩家。你可以给相机一个“目标”坐标,相机可以有规则来跟踪玩家。

然后相机可以确定它是需要“滚动”更快还是更慢才能跟上玩家的步伐。相机需要能够确定玩家是否被画在屏幕的边缘附近,并移动特沃德的边缘。等。

我希望这会有所帮助:)

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 14:59:17

您应该跟踪一些scrollPositionX和scrollPositionY,以抵消您正在绘制的瓷砖。使用一种简单的滚动方法(一次只滚动一个整块),在绘制映射时,可以将scrollPositionX添加到列索引,将scrollPositionY添加到数组引用的行索引中。当玩家靠近边缘时,增加或减少scrollPositionX和scrollPositionY。我建议跟踪玩家在地图上的绝对位置,而不是玩家在屏幕上的位置。因此,如果scrollPositionX == playerX,这意味着播放机在第一列,您可能应该减少scrollPositionX。

票数 1
EN

Stack Overflow用户

发布于 2011-10-18 19:16:04

  1. ,我所做的就是保留4个变量来定义相机的边界。如果播放机相对于摄像机已经超出了这些边界,并且正在移动,那么滚动到适当的方向。相对于相机而言,我的意思不是玩家在世界空间的实际坐标,而是屏幕空间上的坐标。如果需要进一步澄清,请说so.
  2. Spritebatches将是您的朋友!将这些实例与texture2D实例组合在一起,您将被设置。

SpriteBatch batch =新SpriteBatch();Texture2D mySprite = Content.Load("mySprite");batch.begin();batch.draw(mySprite、x、y、宽度、高度);//不确定这些参数,请重复检查它们!batch.end();

将这些东西封装到一个类中,以便于管理!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7806667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档