设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3878|回复: 17
打印 上一主题 下一主题

[推荐问答] 优先级可否设置大于5

[复制链接]

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

1
发表于 2017-3-7 22:38:58 | 显示全部楼层
Tilemap 类是 RGSS1 为数不多不可被修改的一个类,我们无从得知它内部的实现究竟是怎样的。不过从测试的情况来看,数据库的“优先级”的确是起着一个高度的作用,也就是说,优先级为5的图快,它就盖不住从地面往上数的第六块的位置。需要注意的是,如果主角在地图上上下移动的话,坐标覆盖的情况应当有所调整(因为表示角色的图形是一个整体,具有统一的 z 坐标)。

最正规的办法当然是设置更高优先级的图快,但上面回帖已经说明不可行,更改为6以上会造成游戏的崩溃(可能库只考虑到5的情况)。

用 ULDS 直接画一层遮罩层应该说是一个不错的解决办法,但是 XP 的 ULDS,别说楼主了,作为作者的我都不怎么愿意用,因为,太难用。

不过,我们可以利用事件来把这个遮罩层铺出来(设置为“在最前面显示”即可),但是考虑到地图太大,一个个复制事件不是一个好主意,所以我们可以利用脚本来做这件事。
RUBY 代码复制
  1. class Game_Map
  2.   def create_mask_events
  3.     @mask_event_count = 0
  4.     (0...width).each do |x|
  5.       (0...height).each do |y|
  6.         [2, 1, 0].each do |z|
  7.           tile_id = data[x, y, z]
  8.           if tile_id != nil && @terrain_tags[tile_id] == 7
  9.             ev = RPG::Event.new(x, y)
  10.             ev.id = 1000 + @mask_event_count
  11.             ev.pages[0].graphic.tile_id = tile_id
  12.             ev.pages[0].always_on_top = true
  13.             events[ev.id] = Game_Event.new(map_id, ev)
  14.             @mask_event_count += 1
  15.             break
  16.           end
  17.         end
  18.       end
  19.     end
  20.   end
  21.   alias rb_setup_20170317 setup
  22.   def setup(map_id)
  23.     rb_setup_20170317(map_id)
  24.     create_mask_events
  25.   end
  26. end

用法还是一样,地形标志设置为 7 的图快将会无条件出现在最上面。如果同一个位置有两个这样的图快,则只会考虑最高图层上地形标志为 7 的块。

当然,事件铺多了可能会造成掉帧,楼主给出的测试工程铺了 300 多个事件,帧率降低了 2 帧左右。不过这个可以通过修改 Game_Map#update 来防止卡机。在 Game_Map 的 392 行起可以加上一个防卡机判定。在我的代码中,用来铺遮罩层的事件的 ID 从 1000 开始算(因此不会和地图事件冲突)。
RUBY 代码复制
  1. for event in @events.values
  2.   event.update if event.id < 1000
  3. end

楼主可以比较一下我和 guoxiaomi 的方案,选出一个适合自己的使用。

点评

非常感谢,也是一个不错的方法,但是单位机子太老,估计跑不动。谢谢您的热心回答~  发表于 2017-3-7 22:47

评分

参与人数 2星屑 +270 收起 理由
guoxiaomi + 150 塞糖
89444640 + 120

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-4 12:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表