【发布时间】:2010-07-26 10:19:57
【问题描述】:
我想知道用不同高度从后到前渲染由多种大小的瓷砖组成的场景的最佳方法是什么。
像这样:http://www.youtube.com/watch?v=Ahfrxm6ETgA
重要的事情从 2:35 开始。忽略可怕的叙述。 :P
我正在使用 VB2008。
这就是我现在所拥有的:
- 我的图形由位图组成 宽度和长度可以被 32.
- 对象与分配给它们的图形具有相同的尺寸。
- 对象具有层,在移动到下一层之前,从后到前绘制较低层(例如,第 0 层中的所有对象在第 1 层中的对象之前渲染)
- 所有对象,无论是风景/玩家/人物/实体,都一起存储在 MapObject 列表中。
这也是我不确定要保留的东西
- 对象的排序不是基于它们的初始 X/Y 值,而是它们的 X/Y+Height 值。这样,对象会根据它们“接触”比赛场地的位置进行渲染。 例如,X/Y = 树对象的顶部,X/Y = 树对象的树干。
- 人物(包括玩家)只是普通的地图对象,每帧都会在一个巨大的排序列表中进行渲染和更新。
有什么建议吗?现在,修改我的代码可以让我的播放器(32x64 像素)站在建筑物的前面,但她的脚与一片草重叠,这是行不通的。但是,更改排序算法会使玩家消失在建筑物中,但您可以看到她的脚。
所以有问题哈哈。
任何有 2D 渲染经验的人可以帮助我吗?
另外,我的玩家是否应该包含在地图对象列表中?当然,这些只是存储在其他地方的数据的图形表示(地图更改时不会被清除),或者我应该将它们放入一个全新的渲染列表中(这可能会带来全新的问题)。
谢谢!~
编辑:我刚读到这里 http://xnafantasy.wordpress.com/2008/07/22/rendering-dilemmas-z-ordering-grass-and-camera-clipping/
据他所说,他有 4 个不同的层,然后在第 3 层和第 4 层之间绘制演员,第 4 层是始终出现在人物顶部的对象。所以,他的玩家似乎不是一个地图对象,而是一个与其他一切分开渲染的演员。
嗯。
【问题讨论】:
标签: .net vb.net graphics rendering 2d