Project1
标题:
XP有没有办法调整事件的优先级?
[打印本页]
作者:
1243852
时间:
2015-4-25 21:13
标题:
XP有没有办法调整事件的优先级?
VX 和 VA 貌似都有这个功能,,,用XP做游戏做了一半。。。
不知道XP有没有办法通过一些简单的东西,或者脚本,来调整事件的优先级?
就是事件设置成可以穿透,,但是要让事件在主角脚下。
作者:
H·H·Y
时间:
2015-4-25 21:41
(, 下载次数: 55)
上传
点击文件名下载附件
作者:
汪汪
时间:
2015-4-25 22:13
把z值调低就可以吧。
作者:
cinderelmini
时间:
2015-4-25 22:16
本帖最后由 cinderelmini 于 2017-4-24 14:59 编辑
参考VA做了一下,因为不知道怎么读取注释,所以只能用名字来设置了,
设置方法为:在事件命名的时候,末尾用“#n”的形式设置优先级,n为-1~1,,-1为角色下,0为同层,1为角色上,
但是穿透需要自行设置。
代码如下(Mian前Insert,冲突未知):
class Game_Character
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
alias sny46_170424_init initialize
def initialize
sny46_170424_init
# 默认角色优先级
@priority_type = 0
end
#--------------------------------------------------------------------------
# ● 获取画面 Z 坐标
# height : 角色的高度
#--------------------------------------------------------------------------
def screen_z(height = 0)
# 在最前显示的标志为 ON 的情况下
if @always_on_top
# 无条件设置为 999
return 999
end
# 通过实际坐标和地图的显示位置来求得画面坐标
z = (@real_y - $game_map.display_y + 3) / 4 + 32
# 元件的情况下
if @tile_id > 0
# 元件的优先不足 * 32
return z + $game_map.priorities[@tile_id] * 32
# 角色的场合
else
# 如果高度超过 32 就判定为满足 31(加上优先级计算)
return z + ((height > 32) ? 31 : 0) + @priority_type * 100
end
end
end
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 初始化对像
# map_id : 地图 ID
# event : 事件 (RPG::Event)
#--------------------------------------------------------------------------
alias sny46_170424_init_event initialize
def initialize(map_id, event)
sny46_170424_init_event(map_id, event)
# 初始化优先级并刷新
@priority_type = @event.priority_type
refresh
end
end
module RPG
attr_accessor :priority_type
class Event
# 初始化
alias old_init initialize
def initialize(x, y)
old_init(x, y)
# 初始化优先级
@priority_type = priority_type
end
# 重新获取名字
def name
if @name.split(/#/)[1] == nil
return @name
else
return @name.split(/#/)[0]
end
end
# 获取优先级,同名字写在一起,用#分开
def priority_type
return @name.split(/#/)[1] ? @name.split(/#/)[1].to_f : 0
end
end
end
复制代码
作者:
1243852
时间:
2015-4-26 10:53
cinderelmini 发表于 2015-4-25 22:16
参考VA做了一下,因为不知道怎么读取注释,所以只能用名字来设置了,
设置方法为:在事件命名的时候,末尾 ...
有BUG,看有没有办法解决? 我把地图元件的优先级调到了 ★3 也比主角矮。。导致了,主角可以踩着墙或者桌子,。而不是被墙或者桌子遮挡。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0