Tile 形状的选取


  Tile Base Engine 的优点在于其处理速度. 如果我们设计 Isometric Engine 而无视这个优点, 那未免太亏了. 所以贪图一时编程或美工的方便, 将游戏设计成 Tile 大小随意, 而又不去发挥 任意大小 Tile 的优势, (例如形状任意, Sprite 运动路线的任意等等) 将无法超越从前的游戏 Engine。 我们必须向效率和表现力两方面中之一努力. 这次我选择了效率.

Tile 拼接例1 (2,034字节)  不象非 Tile Engine 那么自由, Tile Base 的 Engine 必须保证图素被分割成一块块等大的图片, 有利于遮挡运算和重复利用图片.而Isometric Tile 的拼接并不象矩形Tile 那么容易. 计算机位图数据不允许斜线的存在, 所以 Tile 的形状必须细心设计才能保证无缝拼接. 所有拼接问题, 通常指的底面菱形. 左面展示了一组典型的可以相互拼接的菱形. 请注意它们的形状, 四个顶点都是两个点, 这样才能保证可以无缝拼接. 菱形的两条对角线分别是 2n 和 4n+2 (图中 n=5).

Tile 例 (1,185字节) Tile 拼接例2 (1,726字节)   除了这种形状,我们还有另一种选择. 就是 4 个顶点都是一个点的.(如图) 看看这种 Tile 的拼接, 我们要注意的是需要在拼接的时候, 顶点重叠对齐. 看看右图, 重叠部分是必须的. 这样的菱形对角线分别是 2n-1, 4n+1(图中 n=5). 我的选择正是这第二种形状. 因为它的单个Tile 宽虽然是4n+1, 但每两个间有一点的重合, 整体上看,每个Tile宽占 4n. 而屏幕的宽也是 4 的倍数, 这在后面的设计中可以带来些方便.

P.S. 需要注意的是, Isometric 的 Tile 形状不能任意取, 所以视角也就固定下来了. 我们用 3D 建模软件作图片的时候需要注意视角的问题, 就是摄象机的角度. 我在 斜视角引擎设计:视角的选择和坐标变换 一篇中讲述过视角的换算方法. 我们这里选取的视角换算出来是 30 度 (arc sin 2n/4n)

[相关系列文章]