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 里面更新的时候做就可以了

思路大致是这样的:
RUBY 代码复制
  1. class Scene_Battle
  2.   alias_method :update_20140110, :update
  3.   def update
  4.     update_20140110
  5.  
  6.     # 如果已经更换了 BGM,就什么都不做
  7.     return if @bgm_changed
  8.  
  9.     # 获取队长
  10.     actor = $game_party.actors.first
  11.  
  12.     if actor.max_hp / actor.hp > 5
  13.       # TODO: stop bgm and play new bgm
  14.       @bgm_changed = true
  15.     end
  16.   end
  17. 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 并不会从头播放,所以要随时变化的话就更简单了:

RUBY 代码复制
  1. class Scene_Battle
  2.   alias_method :update_20140110, :update
  3.   def update
  4.     update_20140110
  5.     actor = $game_party.actors.first
  6.     Audio.bgm_play(actor.max_hp / actor.hp > 5 ? "Audio/BGM/XXXX" : "Audio/BGM/XXXX")
  7.   end
  8. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1