【问题标题】:2D Rendering - From Back to Front with Different Heights2D 渲染 - 从后到前,不同高度
【发布时间】: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


    【解决方案1】:

    说实话,我会使用一个包含按高度排序的列表的二维数组(用于 x,y 坐标)。

    假设您不需要旋转景观,您应该能够以简单的顺序访问阵列,从较远的瓷砖开始,然后绘制较近的瓷砖。在绘制图块时,您将在那里绘制最低的对象直到最高的对象(空列表可能意味着绘制默认的底色)。

    关于玩家/角色对象的位置,我想它们只能在空瓷砖中?在这种情况下特殊情况下空的瓷砖绘制代码来检查是否有人在那里并在绘制地面后绘制它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-15
      • 2017-09-01
      • 1970-01-01
      • 2011-09-28
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多