找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 107|回复: 0

[经验] 用“打字机”音效替代角色语音的简单实现方式

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在一些游戏(如“逆转裁判”“undertale”)中,角色说话时会随着文字不断播放音效
1.png

文档中有提到可以用回调函数实现这个效果: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,根据实际更改),所以需要注册一个新通道防止与其他音效或音乐冲突

至于音效,可以参考其他游戏,尽量短。
这个方法可以解决大部分“打字机语音”需求,并且比较简单
2.png
[RenPy] 纯文本查看 复制代码
chm_n "很多人告诉我,{w=.2}太阳很美\n{w=.5}我不知道他们口中的“美”是什么,于是我问那些人类什么是美\n\n{w=.5}他们告诉我,就是{color=#e1c6c2}{i}[[看上去感觉很好]{/color}{/i}..."


最后偷偷放一张自己摸的角色......
3.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 )

GMT+8, 2026-5-9 23:54 , Processed in 0.026371 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表