赞 | 13 |
VIP | 118 |
好人卡 | 28 |
积分 | 12 |
经验 | 35779 |
最后登录 | 2017-7-6 |
在线时间 | 1564 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1170
- 在线时间
- 1564 小时
- 注册时间
- 2008-7-30
- 帖子
- 4418
|
本帖最后由 DeathKing 于 2011-11-7 14:05 编辑
参见VX指导手册:RPG Maker VX -> 地图 -> 通行设定
在B~E组的元件中会有另外一个星号标记 ☆ ,代表该元件的优先级在主角之上。
写代码很快,但是发现了一个BUG:VX的地图绘制是互斥的,B层绘制后再绘制C层,则C层会覆盖B层,因此,不可能检查A、B、C层的通行设定。考虑到楼主的需求,给出的代码只检查了B层的对应区域是否为 [☆] 。楼住可以参考Game_Map#passable?方法来修改此方法。
使用方法:$game_map.mask?(x,y) 检查当前地图x,y坐标处的B层图块是否设置为[☆]。- class Game_Map
- #--------------------------------------------------------------------------
- # ● 判断是否为五角星
- # x : X 坐标
- # y : Y 坐标
- #--------------------------------------------------------------------------
- def mask?(x, y)
- # 考虑到只检查主角是否躲在树下,因此只检查B层
- tile_id = @map.data[x, y, 1] # 获取元件 ID
- return false if tile_id == nil # 获取元件 ID 失败 : 不可以通行
- pass = @passages[tile_id] # 获取通行属性
- return true if pass & 0x10 == 0x10 # [☆] : 不受通行影响
- return false # 不可以通行
- end
- end
复制代码 |
|