Project1

标题: 关于动画播放的音量问题 [打印本页]

作者: gqhondafit    时间: 2013-9-9 00:04
标题: 关于动画播放的音量问题

我用了一个变量$vol来代表设定的音量值,
然后我在Game_System中将def se_play修改了,
后来测试时发现,当$vol=0时,在菜单中没有音效的声音,但只要一用事件播放动画或者在战斗中播放任然有se的声音。

我查了帮助但没有具体说明,所以请教一下各位高手,如何解决?谢谢。

原来的代码:
  1.   #--------------------------------------------------------------------------
  2.   # ● SE 的演奏
  3.   #     se : 演奏的 SE
  4.   #--------------------------------------------------------------------------
  5.   def se_play(se)
  6.     if se != nil and se.name != ""
  7.       Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  8.     end
  9.   end
复制代码
修改后的代码:
  1.   #--------------------------------------------------------------------------
  2.   # ● SE 的演奏
  3.   #     se : 演奏的 SE
  4.   #--------------------------------------------------------------------------
  5.   def se_play(se)
  6.     if se != nil and se.name != ""
  7.       Audio.se_play("Audio/SE/" + se.name, se.volume*$vol10, se.pitch)
  8.     end
  9.   end
复制代码

作者: 弗雷德    时间: 2013-9-9 21:22
这个问题好像一直也没有人去解决,其实也不算难,既然你自己知道如何修改音量,俺直接告诉你方法好了。
首先动画中的音效不通过game_system,所以修改game_system中的音量不生效的,应该直接修改audio模块,但是这个模块RGSS又不开源,只能另辟蹊径,咱们找到RPG::Sprite, 里面有个def animation_process_timing(timing,hit)的方法,下面就有动画中播放音效的语句了。
接下来你懂的。
另外站内某些外挂脚本有修改过animation相关的内容,比如彩虹神剑就将animation_process_timing中的audio.se_play移到了update_animation
修改的时候留意一下就可以了。

俺不想动脚本,实在不会修改再@俺吧
作者: 荣仔    时间: 2013-9-9 22:12
0.0不懂,我新手,路过
作者: gqhondafit    时间: 2013-9-9 23:07
弗雷德 发表于 2013-9-9 21:22
这个问题好像一直也没有人去解决,其实也不算难,既然你自己知道如何修改音量,俺直接告诉你方法好了。
首 ...

按照你的指导,我把整个“model RPG”复制到工程里,这样成功了,
不过在model RPG外部重新定义 def animation_process_timing 就无效了,
所以还想再请教一下如何在 model 外部重定义“animation_process_timing”?
谢谢,:-) !
作者: 弗雷德    时间: 2013-9-9 23:44
本帖最后由 弗雷德 于 2013-9-9 23:45 编辑

@Person
这里只对动画音效起效,系统SE无效。
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def animation_process_timing(timing, hit)
  4.       if (timing.condition == 0) or
  5.          (timing.condition == 1 and hit == true) or
  6.          (timing.condition == 2 and hit == false)
  7.         if timing.se.name != ""
  8.           se = timing.se
  9.           Audio.se_play("Audio/SE/" + se.name, XXXXXXXXX, se.pitch)
  10.         end
  11.         case timing.flash_scope
  12.         when 1
  13.           self.flash(timing.flash_color, timing.flash_duration * 2)
  14.         when 2
  15.           if self.viewport != nil
  16.             self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  17.           end
  18.         when 3
  19.           self.flash(nil, timing.flash_duration * 2)
  20.         end
  21.       end
  22.     end
  23.   end  
  24. end
复制代码

作者: gqhondafit    时间: 2013-9-10 23:26
弗雷德 发表于 2013-9-9 23:44
@Person
这里只对动画音效起效,系统SE无效。

已经弄好了,顺便还可以调整动画播放,真是非常感谢版主的帮忙!
谢谢!




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