马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在一些游戏(如“逆转裁判”“undertale”)中,角色说话时会随着文字不断播放音效
文档中有提到可以用回调函数实现这个效果:https://doc.renpy.cn/zh-CN/character_callbacks.html
这个样例播放“哔-”代替角色语音,前提是启用了慢速文本:
[RenPy] 纯文本查看 复制代码 init python:
def beepy_voice(event, interact=True, **kwargs):
if not interact:
return
if event == "show_done":
renpy.sound.play("beeps.ogg")
elif event == "slow_done":
renpy.sound.stop()
define pike = Character("克里斯托弗·派克", callback=beepy_voice)
label start:
pike "在Talos IV附近逛逛,整整我自己的生意,只要……"
但是这样并不能完美实现我们需要的效果,所以可以优化成这样:
[RenPy] 纯文本查看 复制代码 init python:
renpy.music.register_channel("chara_sound", mixer="sfx", loop=False)
def bleep001(event, **kwargs):
if event == "show":
renpy.music.play("角色声音路径", channel="chara_sound", loop=True)
elif event == "slow_done" or event == "end":
renpy.music.stop(channel="chara_sound")
注册一个新通道用于播放角色音效
然后定义角色时可以这样写:
[RenPy] 纯文本查看 复制代码 define chm_0 = Character(
"旁白",
callback = bleep002
)
但是这样还有一个问题!!
当文字还在显示时如果玩家呼出菜单(game_menu),音效会继续循环播放
解决方法也很简单,在game_menu(或自己新写的界面)里加上这一行:
[RenPy] 纯文本查看 复制代码 python:
if renpy.music.get_playing("chara_sound"):
renpy.music.stop(channel="chara_sound", fadeout=0.5)
在界面里停止播放角色音效的通道(这里我的命名chara_sound,根据实际更改),所以需要注册一个新通道防止与其他音效或音乐冲突
至于音效,可以参考其他游戏,尽量短。
这个方法可以解决大部分“打字机语音”需求,并且比较简单
[RenPy] 纯文本查看 复制代码 chm_n "很多人告诉我,{w=.2}太阳很美\n{w=.5}我不知道他们口中的“美”是什么,于是我问那些人类什么是美\n\n{w=.5}他们告诉我,就是{color=#e1c6c2}{i}[[看上去感觉很好]{/color}{/i}..."
最后偷偷放一张自己摸的角色......
|