赞 | 1 |
VIP | 20 |
好人卡 | 8 |
积分 | 3 |
经验 | 6181 |
最后登录 | 2022-8-5 |
在线时间 | 271 小时 |
Lv2.观梦者 神隐的主犯
- 梦石
- 0
- 星屑
- 288
- 在线时间
- 271 小时
- 注册时间
- 2008-2-22
- 帖子
- 7691
|
本帖最后由 八云紫 于 2010-12-20 13:58 编辑
Tilemap 类
Tilemap 元件地图类, 用于处理地图的描绘以及管理地图的类. 其属性说明如下:
1. 方法
Tilemap 类方法不多, 仅有4个:
● new([Viewport]).
用于生成类实例. Viewport 为显示端口.
● dispose . dispose? . update
释放, 判断是否释放. 更新.
2. 属性
● bitmaps
长度为 8 的数组. 用于存放地图图块素材的属性. 其对应关系如下:
序号 | 对应图块 | 序号 | 对应图块 | 序号 | 对应图块 | 0 | TileA1 | 1 | TileA2 | 2 | TileA3 | 3 | TileA4 | 4 | TileA5 | 5 | TileAB | 6 | TileC | 7 | TileD | 8 | TileE |
● map_data
地图数据. Table 表格类. 通常是从 MapXXXX.rvdata 里获取的. 读取的方法简写为:- load_data(sprintf("Data/Map%03d.rvdata", map_id)).data
复制代码 其大小规定为: 地图长 * 地图宽 * 3 . 这里的 3 层说明如下:
0. A层. 存放 A类图块的 ID 号.
1. 辅助层: 如果某个 ID 具有草木茂盛属性的话, 这层的数据会和 0层的数据正好相差 48 . 是否有其他功能有待研究
2. BCDE 层: 用于存放 BCDE 层的 ID 数据.
● flash_data
F1 的说明是 "引用仿真游戏等中显示可以移动的范围时所用的闪烁信息" , 默认脚本没有使用这个功能. 该功能多数是在 SLG 脚本中使用到(感觉 紫苏酱 补充。) 数组,对于地图上的 x y 坐标。
● passages
数组. 地图图块ID对应的通行度数组. 目前的发现是: 用于显示标记有 "☆" 图块的ID的时候, 将会显示在最上层.
● 剩下的属性
不多说了. 看 F1 一目了然.
注意: F1 里有提到
组成元件地图的每个精灵之 Z 坐标都是固定的。
1. 显示在角色之下的元件,其 Z 坐标为 0。
2. 显示在角色之上的元件,其 Z 坐标为 200. (RGSS2)
图块
VX 的图块粗略的可以分成两大类, 包含自动原件的 A图块和普通的 B C D E 四个图块. 每个图块都有它自己的ID, 利用 ID 来决定地图的某个坐标需要描绘什么图块, 以及判断该点的属性(柜台属性, 草木茂盛属性什么的).
对于图块ID, 胃君 给出了一个表格, 这里我来引用下:
Tile_ID编号规则
0-1024 B/C/D/E,每张256个元件
1536-1664 A5,共128个元件
2048-2816 A1,共16个元件,每个元件占48个编号,不同编号含义见样式一,样式三
2816-4352 A2,共32个元件,每个元件占48个编号,不同编号含义见样式一
4352-5888 A3,共32个元件,每个元件占48个编号,不同编号含义见样式二
5888- A4,共16个元件,每个元件占48个编号,不同编号含义见样式一,样式二
更加具体的说明, 请参照帖子末尾的参考资料3
接下来是判断属性.
通行度判断: 利用 Game_Map 里的 @passages 来获取对应图块ID的通行度. 不要这里需要注意一下, 由于每个坐标上都有3层, 所以在判断的时候需要遍历这 3 层, 次序是由大到小依次判断.
这里列举出四个重要的通行度判断数据:
用途 | 数据 | 人物 | 0x01 | 小型船 | 0x02 | 大型船 | 0x04 | 飞船降落点 | 0x08 |
回到通行度判断, 设定我们需要判断的数据是 flag (其实就是 0X01 等). 在依次取得地图 ID 所对应的通行度数据的时候, 可以这么判断:
1. 如果其值等于 0x10 的时候, 也就是我们设定的 "☆" , 直接跳过.
2. 如果其值与 flag 做与运算的话, 等于 0x00 (其实就是0)的话, 就是 "o" , 可以通行.
3. 如果其值与 flag 做与运算的话, 等于 flag (flag 自己本身)的话, 就是 "x" , 不可通行.
从这里可以看到图块的优先级问题:
1. 标记有 "☆" 默认显示在最上面, 并且不参与通行判断.
2. B C D E 四个图块最先参与判断, 只有在 B C D E 图块不存在的场合("☆" 参照第一条), 在调用 1层和 0层来判断.
柜台属性和草木繁茂属性判断:
柜台属性 引用的数据时来自于第1层的., 对比数据为 0x40, 与运算之后等于 0x40 的话, 就是说明有柜台属性.
草木繁茂属性: 和 柜台属性 类似, 不过引用的是第 0 层数据, 对比数据为 0x80
参考资料:
1. Kiss姐姐的 TileMap脚本
2. 柳大的 还原Tilemap类脚本
3. 胃君 的主动元件解说 |
评分
-
查看全部评分
|