查看: 732|回复: 1

[有事请教] 关于雾气脚本窗口太小引发的问题

[复制链接]
梦石
0
星屑
189
在线时间
1452 小时
注册时间
2010-9-23
回帖
492
发表于 2025-10-11 10:16:52 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

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

×
本帖最后由 黑崎一护 于 2025-10-11 10:16 编辑

试了MOG的摄像机脚本,结果战斗画面中镜头移动时发生如下情况:

雾气窗口

雾气窗口


现在想靠增大雾气窗口来解决,但不知道应该如何修改,求助。

试着修改为this.setFrame(0, 0, Graphics.width*2, Graphics.height*2);
完全没变化,不会弄了。 =A=

[pre lang="ruby"]    //-----------------------------------------------------------------------------
    // Spriteset_Fog
    //
    // The set of sprites of fogs used in map and battle.

    function Spriteset_Fog() {
        this.initialize(...arguments);
    }

    Spriteset_Fog.prototype = Object.create(Sprite.prototype);
    Spriteset_Fog.prototype.constructor = Spriteset_Fog;

    Spriteset_Fog.prototype.initialize = function() {
        Sprite.prototype.initialize.call(this);
        this.setFrame(0, 0, Graphics.width, Graphics.height);
        this.createFogList();  
    };

    Spriteset_Fog.prototype.createFogList = function() {
        if (GabeMZ.FogEffects.currentMap == $gameMap.mapId()) {
            GabeMZ.FogEffects.fogList.forEach( (fog, id) => {
                if (fog) this.createFog(fog.id, id, fog);
            });
        } else {
            GabeMZ.FogEffects.currentMap = $gameMap.mapId()
            this.clearList();
            const reg = /<addFog\s*(\d+):\s*(\d+)>/g;
            let match;
            while (match = reg.exec($dataMap.note)) {
                this.createFog(match[2], match[1]);
            }
        }
    };

    Spriteset_Fog.prototype.update = function() {
        Sprite.prototype.update.call(this);
        if (GabeMZ.FogEffects.needRefresh) this.refreshFogList();
    };

    Spriteset_Fog.prototype.createFog = function(id, layer, fog) {
        if (layer < 1) return;
        const fogSetting = JSON.parse(GabeMZ.FogEffects.fogSettings[id - 1]);
        const sprite = new Sprite_Fog(ImageManager.loadFogs(fogSetting.fogFilename));
        sprite.move(-96, -96, Graphics.width + 192, Graphics.height + 192);
        sprite.opacity = fog ? fog.opacity : parseInt(fogSetting.fogOpacity);
        sprite.blendMode = parseInt(fogSetting.fogBlendMode);
        sprite.origin.x = -96;
        sprite.origin.y = -96;
        sprite.speedX = -parseFloat(fogSetting.fogMoveX);
        sprite.speedY = -parseFloat(fogSetting.fogMoveY);
        sprite.id = id;
        sprite.z = layer;
        if (fog) {
            sprite.constX = fog.constX;
            sprite.constY = fog.constY;
            sprite._opacityTarget = fog._opacityTarget;
            sprite._opacityTime = fog._opacityTime;
            sprite._tone = fog._tone;
            sprite._toneTarget = fog._toneTarget;
            sprite._toneTime = fog._toneTime;
        }
        this.addChild(sprite);
        this._sortChildren();
        GabeMZ.FogEffects.fogList[layer] = sprite;
    };

    Spriteset_Fog.prototype._sortChildren = function() {
        this.children.sort(this._compareChildOrder.bind(this));
    };
   
    Spriteset_Fog.prototype._compareChildOrder = function(a, b) {
        if (a.z !== b.z) {
            return a.z - b.z;
        } else if (a.y !== b.y) {
            return a.y - b.y;
        } else {
            return a.spriteId - b.spriteId;
        }
    };

    Spriteset_Fog.prototype.refreshFogList = function() {
        if (GabeMZ.FogEffects.tempFog.length > 0) {
            GabeMZ.FogEffects.tempFog.forEach(fog => {
                this.removeChild(GabeMZ.FogEffects.fogList[fog[1]]);
                GabeMZ.FogEffects.fogList[fog[1]] = null;
                if (fog[0]) this.createFog(fog[0], fog[1]);
            });
        } else {
            this.clearList();
        }
        GabeMZ.FogEffects.needRefresh = false;
    };

    Spriteset_Fog.prototype.clearList = function() {
        GabeMZ.FogEffects.fogList.forEach(fog => {this.removeChild(fog)});
        GabeMZ.FogEffects.fogList = [];
    };[/pre]
梦石
0
星屑
1518
在线时间
167 小时
注册时间
2025-2-15
回帖
67
发表于 2025-10-11 21:49:07 | 显示全部楼层
楼主在1楼怎么写着RUBY 代码呢?
看着像是JavaScript的代码啊,是Project1这里只设置了RUBY 代码吗?

那么长的代码没耐心看完,但是看着截图的效果,应该是雾气窗口左上角原点的问题,而不是雾气窗口大小的问题。
要不试一下把左上角原点设定为负数(负100不够,那就负1000好了),再把窗口大小改成屏幕的2倍。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部