45度地图编辑器:斜45度角地图拼接

All Rights Reserved to Lacutis, 2004

  有人在新浪网游戏制作论坛问这个那我随便说说这个问题解法先看看地图元素:

\" width=64 border=0>

可以看出来是个扁菱形这个地图元素大小是64X32你可以随意决定元素长宽在设计地图元素大小并不重要只要把尺寸扔进绘图方程就能正确地绘制地图在这个例子中我们就先用64X32来演示

那么这个公式是如何样呢?先看看Staggered地图:

\" width=323 border=0> <-- Staggered

这个地图有5行看着这个地图你会想如何拼图才能将地图拼出来再画张图来演示:

\" width=323 border=0>

从这张图可以看出拼图时从左到右从上到下跟正规矩形拼图地图元素和元素的间有重叠看看第行和第 2行的间第 2行地图元素会压在第元素上而第 3行地图元素则压在第 2行元素上所以只要找到正确公式你就能正确地设计再来张图:

\" width=516 border=0>

图上绿点(是高亮度绿色不是暗绿色)是每块地图元素起点座标是0第 2行座标是1第 3行座标是2......由这些行位座标决定你地图元素起点从这个规律中看出行位座标0和行位座标2横向座标X起点是是0行位座标1起点是向右移半块地图元素

再从纵向座标找规律看行位座标0和行位座标2两块地图元素的间距离刚好是块地图元素再看看行位座标0和行位座标1两块地图元素的间距离刚好是半块地图元素所以计算每块地图元素位置公式刚好是:

void CalculateMapTilePos( n_map_pos_x,
n_map_pos_y,
& n_scrn_pos_x,
& n_scrn_pos_y)
{
n_scrn_pos_x = n_map_pos_x * iso_tile_size_x
+ (n_map_pos_y & 1) * (iso_tile_size_x / 2);
n_scrn_pos_y = (n_map_pos_y) * iso_tile_size_y / 2;
}
在这个公式中n_map_pos_x是地图纵横横向座标n_map_pos_y是地图纵横纵向座标n_scrn_pos_x和n_scrn_pos_y是地图元素在屏幕上纵横座标

重要:

首先以上公式只适用于Staggered斜45度角地图而slide和Diamond形地图这个公式要稍加修改才能用

Slide:

\" width=323 border=0>

Diamond:

\" width=259 border=0>



Tags:  45度角 45度地图编辑 45度地图 45度地图编辑器

延伸阅读

最新评论

发表评论