赞 | 35 |
VIP | 0 |
好人卡 | 0 |
积分 | 72 |
经验 | 0 |
最后登录 | 2024-11-16 |
在线时间 | 474 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 7247
- 在线时间
- 474 小时
- 注册时间
- 2021-12-4
- 帖子
- 513
|
设$dataMap(即某个MapXxx.json)的宽高分别为w = width和h = height格,则其data为一个长度为6wh的一维数组(向量),元素全部为[0,8192)的整数。
该向量共分为6段,每段长度为wh,前四段分别为四层图块ID,后两段为阴影和区域ID,阴影每格分为四小格所以有16种情况(在向量中可能为0~15,没试过),区域ID为0~255。
这样一来,点(x,y)的第z层的ID就是data[(z * h + y) * w + x],其中z为0~5。
图块ID的范围是[0,8192),其中[0,256)、[256,512)、[512,768)、[768,1024)分别为B~E组的图块,每组有16行16列,比如B组第一行左边8列就是0~7。但是我不确定右边8列是不是8~15,也有可能是128~135?(因为编辑器左侧的调色板是先左边8列再右边8列)
A5、A1、A2、A3、A4组的范围分别为[1536,2048)、[2048,2816)、[2816,4352)、[4352,5888)、[5888,8192),也就是说其实E组和A5组最多分别可以有48行和64行?(因为A5组只有8列)
A1~A4组因为是自动元件,所以实际上每48个ID对应同一个图块,比如A1左上角的图块ID范围其实是[2048,2096),该范围内不同的值表示不同的相邻情况带来的形状差异。
接着来说说Tilesets.json中的flags,它是一个长度为8192的向量,其元素全部为正整数,每个数包含了一个图块的【通行性、四方向通行性、是否梯子、是否灌木/流体、是否柜台、是否有害、地形标志】,以二进制方式存储。具体的存储规则是,将下面具有的属性所对应的数字直接相加,存储所得到的总和:
1、2、4、8表示【下、左、右、上】的通行性。
16表示通行性为五角星,显示在前景层。
32、64、128、256分别表示梯子、灌木、柜台、有害。
512、1024、2048分别表示【小舟、大船】的通行性以及【飞艇能否着陆】,但是编辑器里并不能修改这三项?
4096、8192、16384分别表示地形标志的【1、2、4】,相加即可得到0~7。
一般来说,涉及通行性(包括三种交通工具)的项会同时考虑该点的四层图块以及该点【以B~E组图块为行走图】的事件,而【梯子、灌木、柜台、有害、地形标志】则只考虑四层图块(从高层向低层)。 |
评分
-
查看全部评分
|