找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: 令貓

[有回复] 大佬们,怎么让一个角色说话的时候其他角色都变暗

  [复制链接]
发表于 2020-9-8 19:19:48 | 显示全部楼层
u1timate 发表于 2020-7-21 13:56
[RenPy] 纯文本查看 复制代码
transform dark_in:
    alpha 1.0

[/quote]

感谢大佬分享!

想进一步请教一下,“发言时的表情”指的是什么呢?我原来是用更换立绘的方式去改角色的表情的,能详细请教一下这里指的是怎么去更换表情吗?

如果涉及了一个角色对应多个立绘的情况,这个时候在声明角色的时候要怎么声明呢?因为我理解目前这份代码可以实现的基础是,一个角色只对应一个立绘(角色Eileen对应的立绘就是"eileen"一张),我尝试了给partial增多参数,虽然不会报错,但是也不会变暗
[mw_shl_code=renpy,true]# 比如说
define e = Character("Eileen", callback=partial(char_fade, "eileen_smile","eileen_cry","eileen_angry")) 虽然不会报错,但是无法变暗,假如想要实现变暗,那应该怎么做比较好呢
回复 支持 抱歉

使用道具 举报

发表于 2020-9-9 12:40:15 | 显示全部楼层
本帖最后由 u1timate 于 2020-9-9 12:41 编辑
dondonaq 发表于 2020-9-8 19:19
感谢大佬分享!

想进一步请教一下,“发言时的表情”指的是什么呢?我原来是用更换立绘的方式去改角色的 ...

我说的表情是这个https://zhuanlan.zhihu.com/p/133384326
而且我写的这玩意不太好用 人一多就得手动隐藏旧人物 等我这周考试周过完我重写一遍罢
回复 支持 抱歉

使用道具 举报

发表于 2020-9-9 16:13:49 | 显示全部楼层
本帖最后由 dondonaq 于 2020-9-9 16:34 编辑
u1timate 发表于 2020-9-9 12:40
我说的表情是这个https://zhuanlan.zhihu.com/p/133384326
而且我写的这玩意不太好用 人一多就得手动隐藏 ...

原来是这样!!了解了!!感谢大佬!!因为我自己这个游戏6个角色三十几张立绘(一个角色至少3 4张) 昨天琢磨了一下午还是想不出来怎么用比较好,技术不精想来想去好像只能一行行写 就是头秃得有点快

期待大佬的新分享!!!!!

PS 刚刚看了大佬的知乎,看到了更换服饰那篇文章,惊了!!马上拿去给美术看了 真的表情和服装太多了得调整一下orz 感谢
回复 支持 抱歉

使用道具 举报

发表于 2021-5-14 22:18:06 | 显示全部楼层
[RenPy] 纯文本查看 复制代码
transform dark_in:
        alpha 1.0

transform dark_out:
        alpha 0.75

define speaking_ls = {}

init -1 python:
    from functools import partial
    def char_fade(character_name, event_name, *args, **kwargs):
        if event_name == "begin":
            if character_name != None:
                tags = renpy.get_attributes(character_name)
                at_ls = renpy.get_at_list(character_name)
                if not at_ls or not tags:
                    return
                else:
                    str_tags = " ".join(tags)
                l = [character_name, str_tags, at_ls[0]]
                speaking_ls[character_name] = l

                renpy.show(character_name + " " + str_tags, at_list=[l[2], dark_in])
                for x in speaking_ls.values():
                    if x[0] != character_name:
                        renpy.show(x[0] + " " + x[1], at_list=[x[2], dark_out])
        if event_name == "end":
            for x in speaking_ls.values():
                renpy.show(x[0] + " " + x[1], at_list=[x[2], dark_out])
            if speaking_ls.has_key(character_name):
                speaking_ls.pop(character_name)


再修改了一下,现在不用再每段声明list,不用在意没有立绘的人物说话的问题
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 09:13 , Processed in 0.092166 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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