tile是什么意思:Tile Based Engine的设计 - 遮挡处理

  所谓 Isometric, 应该是指等距视角, 和透视相对, 指视野内物体, 无论远近都用同大小来表现. 而Tile 就是指砖块, 我们平常所见许多 2D 游戏, 都是 Tile . 比如新出决战朝鲜, 还有去年皇朝霸业;-), 这两个游戏都是典型 Tile 游戏, 游戏中元素被分割为个个砖块拼装起来. 区别是, 前者是矩形 Tile, 而后者是 Isometric . 它Tile 有高度, 底面为个菱形. Isometric 外观更接近真实物体, 我个人比较喜欢这样图形表现形式. 由于 Isometric Tile 相互覆盖, 所以就有了遮挡问题, (传统矩形Tile是没有遮挡问题, 但其扩展也需要处理这个,不过比Isometric简单), 这也许是Isometric Tile 引擎设计个难点, 本文重点就在于介绍云风处理思路方法.

   先来看看 Isometric 下地图,
\" width=256 border=0>

这里由个个菱形拼起来,每个菱形就是个 Tile 底面, 我将每个 Tile 编了号, 是按游戏世界坐标编, 组织数据时候完全可以按照这个形式在内存开个2D 描述地图. 实际上你也可以按照屏幕横竖方向编坐标, 处理时注意这时奇数行和偶数行Tile屏幕坐标相差半个 Tile 宽就可以了, 这样处理也很方便, 实际上两种坐标可以用个很简单公式换算, 本文不使用这种坐标,在此不提. 如果你不想为遮挡问题而烦恼, 最简单处理思路方法是每次产生症图象时候, 按从左上到右下,从右上到左下(就是游戏世界中从左到右,从后到前)顺序把每个Tile画遍就够了. 但是这对于 Isometric 来说是很大浪费, Isometric 中每个Tile 都是等大,遮挡关系目了然. 般我们将Tile 高度单位设置成 Tile 底面矩形高,方便处理(如下图). 当游戏世界是单层时,这样个最小单位Tile, 它可能被比它 (x,y) 坐标大 1 Tile 共 3 块遮挡. 同样, 如果个精灵占了 4 个 Tile,可能遮挡它 Tile 为 5 个. 如果物体有两层, 可能遮挡这个 2x2 物体 Tile 就是10个, 依此类推.

\" width=70 border=0> \" width=129 border=0>

现在来看个例子,

\" width=256 border=0>

上图中, 有两个(固定)物体, 树是 2x2 , 它占据了 (2,2) (2,3) (3,2) (3,3) 4个Tile, 石块是 1x1 , 占据了 (1,3) 这个 Tile. 大象(精灵) 也是 2x2 ,目前它在 (0,1) (0,2) (1,1) (1,2) 这4个 Tile 上.
OK, 看看另张图:

\" width=256 border=0>

更清楚些. 般来说, 绘制 Isometric 场景分 2 步, 先产生固定场景,再绘制精灵.精灵由于是运动, 所以通常每帧图都要重画次(当然也可以不用全部重画, 让每个精灵运动频率区别, 动画交错, 提高速度, 这个技术比较复杂, 在我超越 Isometric Tile Engine 中使用效果不错:-) 这个例子就是要介绍说明图中大象是如何画: 大象占据是 (0,1) (0,2) (1,1) (1,2) 4 个Tile, 单层地图中可以遮挡它 5 个 Tile 分别是 (2,1) (2,2) (2,3) (0,3) (1,3), 这 5 个坐标很容易求得, 最简单思路方法是将 大象占据 4 个 Tile 坐标都加 1,(从 (x,y) 推出 (x+1,y) (x+1,y+1) (x,y+1) ), 把推出 12 组坐标中重复删掉. 当然这不是最好算法, 这儿只是举个例子. 从地图上可以得到, (2,2) (2,3) (1,3) 上放有物体, 其中 (2,2) (2,3) 是 同棵树两部分, 所以只算个. (1,3) 上是个石块. 下步, 我们设置个剪裁矩形将画大象区域框起来, 再向上面绘制遮挡它树和石块. 注意,这里剪裁矩形设置是不能少, 否则这个遮挡问题处理完了, 又会引出新遮挡问题 ;-) 具体步骤如下:

\" width=256 border=0>
-->
\" width=256 border=0>
-->
\" width=256 border=0>
-->
\" width=256 border=0>

   可以看到, 传统 Isometric Tile 引擎优点正在于遮挡处理简洁, 速度快. 所以我个人观点就是, 如果要2D 游戏图形引擎要革新, 就全部采用新复杂手段, 使其完全摆脱 Tile, 所有物体都是任意凸多边形, 精灵行走方向任意, 物体高度任意. 否则就采用传统 Isometric Tile 型, (到目前经典 2D 游戏几乎都是很正统Tile Base , 比如 Diablo, Starcraft...) 以获得高处理速度. 从速度和效果两方面看, 界于中间处理思路方法,就不是很可取了
Tags:  tilelayerpro strutstile ceramictile tile是什么意思

延伸阅读

最新评论

发表评论