English 中文(简体)
平台平台瓷砖引擎- 关于如何使用长瓷砖的咨询
原标题:Platformer tile engine--advice on what to do with long tiles

我不仅寻求直接帮助,还寻求建议。

我在XNA中正在玩八位位平台游戏。 我大概已经沉没了160小时了, 我开始进入引擎的问题了。 它基本上是XNA平台演示的调整版/修改版。 我所有或大部分的瓷砖都是32x32, 但有些是64宽的,32px高,像一张桌子一样。 有些是32宽的,64高,就像一个工厂。

我把它们运到 gpu 只有一个. png, 时间与 XNA 辅导作者绘制瓷砖图的方式相似。 对于动画图示我确实使用不同字符框架的瓷砖图。 对于瓷砖地图数据, 我在一个文本文件中读到的和 XNA 辅导文件一样。

我该如何适应宽高的瓷砖? 我该做一个两层的瓷砖系统吗? (我想我应该遵守保守的简单规则 )?

现在我用透明瓷砖 来扩展宽的瓷砖

配有主席的办公桌:

"http://dl.drobox.com/u/844600/game_screen_desk.png" rel=“nofollown noreferrerr" > 主席 http://dl.droftbox.com/u/8446090/game_screen_desk.png

.....
...h.
..d".
#####

植物和椅子:

http://dl.droppox.com/u/844600/game_screen_creen_cop.png" rel=“nofollown noreferrerr" > 台词http://dl.droppox.com/u/8446090/game_creen_creen_cop.png

..p...h.
..,...,.
########

椅子是h, d 用于办公桌, p 是植物, 并且, 是一个透明的背景瓷砖( 与用户不互动) 。 " 是一个透明的瓷砖, 供用户使用( 扩展办公桌 ) 。 问题在于, 如您所见, 背景似乎有一个洞 。

我是否应该绘制一个实际的瓷砖地图,并把所有的东西都合并成一个大的平方块?我可以选择的另一种办法是将每个宽或高的瓷砖切成两个不同的瓷砖。一个专业的如何做到呢?我不是在寻找一个快速和肮脏的修补方法,而是一个现代的平台如何运行。

更新:在审查答案后, 我发现一个非常有用的工具, 将图示包装成工作表 。

< a href=> "http://spriteshallpacker.codeplex.com/" rel=" no follown noreferrer" >http://spriteshallpacker.codplex.com/

最新消息:我新升级的瓷砖引擎速度快得多,几乎同样简单。下面的忠告很好。强烈推荐。

最佳回答

首先关闭 - 不要引入特殊宽/ 厚的格子。 使艺人将大型天体切成单个瓷砖( 从而在地图编辑器上重新组合它们 ) 。 每个瓷砖都应该是带有阿尔法频道的 PNG, 以便它们能够正确组成 。

铭记这一点,我的建议是:

  1. 您的瓷砖应该只包括含有不同对象的预合成部分的单瓷砖,例如,桌面的左部分是一块瓷砖,没有椅子的右部分是另一块,另一块是后面的椅子。 (瓷砖值=“dc”,也许? )

  2. 您可以定义多个层的单砖块, 并把它们背对齐。 您也可以定义多个层的准拉轴因子, 从而很容易地在两个层之间获得一个漂亮的准拉轴效果。 当然, 玩家必须一次在一个层中“ 存在 ”, 否则您将不知道他/ 她当前位置使用什么相撞几何方法 。

您也不应该在每瓷砖中创建一个纹理, 而是一个编译过的瓷片表( 确切地说就像一个图示表), 这样可以最小化您所做的变换状态更改的数量。 每次调用时做很多更改都是不好的, 因为每次修改( 当前纹理、 绘图颜色或其他影响该调用的东西) API、 驱动程序, 可能还有 GPU 自己要努力更新其状态---- 这加起来很快。

请注意, 这并不意味着您应该将字符和级别放入 HUGE 样板表 - 这有其他原因。 例如: 将所有级别相关的瓷砖放入一张牌里, 将英雄动画牌放在另一张牌上, 并将所有敌人放在一张( 一起) 或类似的牌上 。

希望这有帮助, 否则我会很高兴 进一步解释一些事情。

问题回答

暂无回答




相关问题
How to disable the depth buffer?

I don t see a RenderState as a member in the GraphicsDevice class, which is where the functions for disabling the depth buffer used to be. Anyone know how this is done with this new 4.0 API? It would ...

Xna 4.0 3D Vertex example

I m currently trying to make a simple square by combining two triangles, like in the tutorials by Riemer (Link to tutorial), but since a lot has changed from 3.x to 4.0, I find it difficult. I would ...

Drag/Swipe to scroll the screen

What would be the best way to have a vertical scrolling screen? My game will consume two screens high, the user should be able to move between the two screens by a simple drag or swipe action. The ...

How do I load a texture in XNA at runtime?

I m working on an application that uses the XNA framework to do it s 3D rendering. I now want to load a texture from file. I ve found two methods so far: Texture2D.FromStream(GraphicsDevice, Stream) ...

Problems with some textures in XNA

I have made a model using Sketchup, and have tested rendering it using Blender and it looks great. However loading it in XNA has two problems. 1. One of the textures becomes see-thru not entierly ...

Need help loading XML data into XNA 4.0 project

I d like to do this the right way if possible. I have XML data as follows: <?xml version="1.0" encoding="utf-8"?> <XnaContent> <Asset Type="PG2.Dictionary"> &...

Formatting Text in C# with XNA

I m currently trying to make a TextBox for my GUI with XNA, and I was wondering how could I find tagged text in a string. For instanceI have this kind of text: Hey there, I was <r>going to</...

热门标签