找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 394|回复: 6

[求助] 关于图层定义冲突的问题

[复制链接]
发表于 2023-10-12 17:31:18 | 显示全部楼层 |阅读模式

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

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

×
在同时使用鼠标视差功能和摄像机功能时遇到了冲突,发现是:

鼠标视差的:config.layers=cflayer 和摄像机功能的 config.layers = ['master', 'background', 'middle', 'forward', 'transient', 'screens', 'overlay'] 起了冲突,请问有什么两全其美的方法吗?
本人艺术生来的,编程真的一窍不通。。。大佬们救救!!!

以下是鼠标视差功能的内容;摄像机的文本太长就不发上来了。

init 800 python:
    class MouseParallax(renpy.Displayable):
        def __init__(self,layer_info):
            super(renpy.Displayable,self).__init__()
            self.xoffset,self.yoffset=0.0,0.0

            self.sort_layer=sorted(layer_info,reverse=True)
            cflayer=[]
            masteryet=False
            for m,n in self.sort_layer:
                if(not masteryet)and(m<0):
                    cflayer.append("master")
                    masteryet=True
                cflayer.append(n)
            if not masteryet:
                cflayer.append("master")
            cflayer.extend(["transient","screens","overlay"])
            config.layers=cflayer
            config.overlay_functions.append(self.overlay)
            return
        def render(self,width,height,st,at):
            return renpy.Render(width,height)
        def parallax(self,m):
            func = renpy.curry(trans)(disp=self, m=m)
            return Transform(function=func)
        def overlay(self):
            ui.add(self)
            for m,n in self.sort_layer:
                renpy.layer_at_list([self.parallax(m)],n)
            return
        def event(self,ev,x,y,st):
            import pygame
            if ev.type==pygame.MOUSEMOTION:
                self.xoffset,self.yoffset=((float)(x)/(config.screen_width))-0.5,((float)(y)/(config.screen_height))-1.0
            return

    def trans(d, st, at, disp=None, m=None):
        d.xoffset, d.yoffset = int(round(m*disp.xoffset)), int(round(m*disp.yoffset))
        if persistent.bg_parallax is False:
            d.xoffset, d.yoffset=0,0
        return 0

    #MouseParallax([(2000,"background"),(0,"middle"),(0,"forward"),(0,"transient"),(0,"screens"),(0,"overlay")])
    MouseParallax([(-15,"farthestBack"),(-40,"farBack"),(-70,"back"),(-30,"front"),(50,"inyourface")])
    config.tag_layer = {
    'effects': 'back', # particle effects etc.
    'formovie': 'farBack',
    'sprite': 'front',
    'bg' : 'farthestBack'
    }

发表于 2023-10-12 23:53:58 | 显示全部楼层
是否可以提供一份短小的工程文件看看呢?
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-10-13 17:16:57 | 显示全部楼层
这是两个冲突的文件,主要表现于config.layers=cflayer的优先级高于config.layers = ['master', 'background', 'middle', 'forward', 'transient', 'screens', 'overlay'] 从而导致使用camera插件的时候无法正常显示

camera.rpy

84.24 KB, 下载次数: 0, 下载积分: 活力 100

parallax.rpy

1.83 KB, 下载次数: 0, 下载积分: 活力 100

回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-10-13 17:17:37 | 显示全部楼层
Furau 发表于 2023-10-12 23:53
是否可以提供一份短小的工程文件看看呢?

下面两个冲突的文件,主要表现于config.layers=cflayer的优先级高于config.layers = ['master', 'background', 'middle', 'forward', 'transient', 'screens', 'overlay'] 从而导致使用camera插件的时候无法正常显示
回复 支持 抱歉

使用道具 举报

发表于 2023-10-13 17:19:35 | 显示全部楼层
玖拾就是90 发表于 2023-10-13 17:17
下面两个冲突的文件,主要表现于config.layers=cflayer的优先级高于config.layers = ['master', 'backgro ...

init 后面的数字代表这段代码的优先顺序,你可以按照需要调整
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-10-13 18:12:31 | 显示全部楼层
Furau 发表于 2023-10-13 17:19
init 后面的数字代表这段代码的优先顺序,你可以按照需要调整

原来如此,感谢你的回复!!那请问假如我想要在游戏过程中前一段a优先性比b高,使用a的效果;后一段b优先性比a高,使用b的效果。应该怎么写这个代码?
回复 支持 抱歉

使用道具 举报

发表于 2023-10-13 21:34:45 | 显示全部楼层
玖拾就是90 发表于 2023-10-13 18:12
原来如此,感谢你的回复!!那请问假如我想要在游戏过程中前一段a优先性比b高,使用a的效果;后一段b优先 ...

1.如果init是同级别 程序会按照文件名的unicode字符顺序。文件内,从头到尾顺序运行。
你可以设计一下这个命名,看看是否可以实现你需要的这个顺序
2.任何操作可以封装成一个函数,在需要的时候调用
你需要做的是设计这个调用的时机
具体可以参考这里
https://doc.renpy.cn/zh-CN/python.html#init-python
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 02:25 , Processed in 0.109685 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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