Project1
标题: 战斗中无法实现根据HP自由切换BGM [打印本页]
作者: 飞火流萤 时间: 2015-1-9 10:25
标题: 战斗中无法实现根据HP自由切换BGM
试验了三个小时了,公共事件里把HP代入角色HP,MAXHP代入角色MAXHP,然后用MAXHP\HP,得到比值,比如得到后的MAXHP大于5,就是血量小于20%。战斗事件条件分歧,切换BGM.小于5,就是大于20%,切换BGM。
理论上这些是行得通的,但是会非常卡不说,基本上还判定不了,感觉战斗事件里有些不一样。
作者: Thylakoid 时间: 2015-1-9 18:47
“基本上还判定不了”是什么意思?是说背景音乐确实换了,但换的时机与自己想要的有偏差,还是没能成功切换?
作者: 飞火流萤 时间: 2015-1-9 19:29
换的不对
作者: 573932914 时间: 2015-1-9 22:39
如果卡就做移动时判断一次那么简单呗
作者: taroxd 时间: 2015-1-10 08:36
本帖最后由 taroxd 于 2015-1-10 08:41 编辑
完全脱离事件,直接在 Scene 里面更新的时候做就可以了
思路大致是这样的:
class Scene_Battle
alias_method :update_20140110, :update
def update
update_20140110
# 如果已经更换了 BGM,就什么都不做
return if @bgm_changed
# 获取队长
actor = $game_party.actors.first
if actor.max_hp / actor.hp > 5
# TODO: stop bgm and play new bgm
@bgm_changed = true
end
end
end
class Scene_Battle
alias_method :update_20140110, :update
def update
update_20140110
# 如果已经更换了 BGM,就什么都不做
return if @bgm_changed
# 获取队长
actor = $game_party.actors.first
if actor.max_hp / actor.hp > 5
# TODO: stop bgm and play new bgm
@bgm_changed = true
end
end
end
作者: 飞火流萤 时间: 2015-1-10 10:56
$bgm_changed = "Audio/BGM/XXXX"
$bgm_changed2 = "Audio/BGM/XXXX"
class Scene_Battle
alias_method :update_20140110, :update
def update
update_20140110
# 如果已经更换了 BGM,就什么都不做
return if @bgm_changed
# 获取队长
actor = $game_party.actors.first
if actor.maxhp / actor.hp > 5
# TODO: stop bgm and play new bgm
@bgm_changed = true
@bgm_changed2 = false
Audio.bgm_play($bgm_changed)
else
@bgm_changed2 = true
@bgm_changed = false
Audio.bgm_play($bgm_changed2)
end
end
end
作者: taroxd 时间: 2015-1-10 11:11
本帖最后由 taroxd 于 2015-1-10 11:18 编辑
飞火流萤 发表于 2015-1-10 10:56 
$bgm_changed = "Audio/BGM/XXXX"
$bgm_changed2 = "Audio/BGM/XXXX"
class Scene_Battle
我写的时候就没有考虑变回来。如果要变回来的话,上面的逻辑就有点问题。
考虑到重复播放同一个 BGM 并不会从头播放,所以要随时变化的话就更简单了:
class Scene_Battle
alias_method :update_20140110, :update
def update
update_20140110
actor = $game_party.actors.first
Audio.bgm_play(actor.max_hp / actor.hp > 5 ? "Audio/BGM/XXXX" : "Audio/BGM/XXXX")
end
end
class Scene_Battle
alias_method :update_20140110, :update
def update
update_20140110
actor = $game_party.actors.first
Audio.bgm_play(actor.max_hp / actor.hp > 5 ? "Audio/BGM/XXXX" : "Audio/BGM/XXXX")
end
end
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |