我将构建一个高级的 2D Up-Down RPG。
它将是我现有的 2D Flash RPG 引擎 (Adobe Air) 的 C# + XNA 版本。
好吧,在 Flash Pro 中,我只是为不同的图层使用了不同的 MovieClip,但我怎么能在 C# 中使用 XNA 实现这一点?
我希望能够使用我制作的 Flash Map Editor 的输出 ( map-data-file )。
输出文件如下所示:
<layer1>
0.0.0.A.A.A.A.B.B.A.A.0.0.0
0.0.0.A.A.A.A.B.B.B.A.A.0.0
0.0.A.A.A.B.B.B.B.B.B.A.0.0
0.A.A.A.A.B.B.B.B.B.B.A.A.0
0.A.A.A.A.B.B.B.B.B.B.A.A.0
0.A.A.A.A.A.B.B.B.B.B:B.A.0
0.0.A.A.A.A.B.B.B.B.A.A.A.0
0.0.A.A.A.A.A.B.B.A.A.A.0.0
0.0.0.A.A.A.A.B.B.A.A.0.0.0
<layer2>
. . . . .
. . .
.
.
<layer3>
.
.
.
以此类推……
在哪里:
0 = Blank;
A = Gras;
B = Water;
所以我想简单地遍历这些行,保存在数组中并将对应的精灵添加到特定的层,可能是这样的:
Layers[2].Add( tile, x, y );
我怎么能意识到这一点?还有,我如何管理 z 排序,因为我希望能够在桥下行走,或者开车穿过隧道。
(就像在这张图片中,可能有一艘船在桥下行驶)
甚至一些楼梯可以到达下一个阶段(切换层)
你们对我有什么想法甚至是参考吗?
谢谢你所有的答案!
编辑:
层 hiracy 应该是这样的:
map{
Layer[0] { // "bg"
xyArray{ .... }
}
Layer[1] { // "static" - bottom part / stairs of the bridge
xyArray{ .... }
}
Layer[2] { // "items"
xyArray{ .... }
}
Layer[3] { // "player"
xyArray{ .... }
}
Layer[4] { // "static2" - top part of bridge
xyArray{ .... }
}
}
// if the player is ON a tile that hat a Stair funktion, the "player" layer will be
// moved on top of the "static2" layer, so 'Layer[3].Z = 4;' and 'Layer[4].Z = 3;'
// like i showed in the Switch funktion up there