设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 120|回复: 1
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
132
在线时间
1441 小时
注册时间
2010-9-23
帖子
565
跳转到指定楼层
1
发表于 2025-10-11 10:16:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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


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

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

RUBY 代码复制
  1. //-----------------------------------------------------------------------------
  2.     // Spriteset_Fog
  3.     //
  4.     // The set of sprites of fogs used in map and battle.
  5.  
  6.     function Spriteset_Fog() {
  7.         this.initialize(...arguments);
  8.     }
  9.  
  10.     Spriteset_Fog.prototype = Object.create(Sprite.prototype);
  11.     Spriteset_Fog.prototype.constructor = Spriteset_Fog;
  12.  
  13.     Spriteset_Fog.prototype.initialize = function() {
  14.         Sprite.prototype.initialize.call(this);
  15.         this.setFrame(0, 0, Graphics.width, Graphics.height);
  16.         this.createFogList();  
  17.     };
  18.  
  19.     Spriteset_Fog.prototype.createFogList = function() {
  20.         if (GabeMZ.FogEffects.currentMap == $gameMap.mapId()) {
  21.             GabeMZ.FogEffects.fogList.forEach( (fog, id) => {
  22.                 if (fog) this.createFog(fog.id, id, fog);
  23.             });
  24.         } else {
  25.             GabeMZ.FogEffects.currentMap = $gameMap.mapId()
  26.             this.clearList();
  27.             const reg = /<addFog\s*(\d+):\s*(\d+)>/g;
  28.             let match;
  29.             while (match = reg.exec($dataMap.note)) {
  30.                 this.createFog(match[2], match[1]);
  31.             }
  32.         }
  33.     };
  34.  
  35.     Spriteset_Fog.prototype.update = function() {
  36.         Sprite.prototype.update.call(this);
  37.         if (GabeMZ.FogEffects.needRefresh) this.refreshFogList();
  38.     };
  39.  
  40.     Spriteset_Fog.prototype.createFog = function(id, layer, fog) {
  41.         if (layer < 1) return;
  42.         const fogSetting = JSON.parse(GabeMZ.FogEffects.fogSettings[id - 1]);
  43.         const sprite = new Sprite_Fog(ImageManager.loadFogs(fogSetting.fogFilename));
  44.         sprite.move(-96, -96, Graphics.width + 192, Graphics.height + 192);
  45.         sprite.opacity = fog ? fog.opacity : parseInt(fogSetting.fogOpacity);
  46.         sprite.blendMode = parseInt(fogSetting.fogBlendMode);
  47.         sprite.origin.x = -96;
  48.         sprite.origin.y = -96;
  49.         sprite.speedX = -parseFloat(fogSetting.fogMoveX);
  50.         sprite.speedY = -parseFloat(fogSetting.fogMoveY);
  51.         sprite.id = id;
  52.         sprite.z = layer;
  53.         if (fog) {
  54.             sprite.constX = fog.constX;
  55.             sprite.constY = fog.constY;
  56.             sprite._opacityTarget = fog._opacityTarget;
  57.             sprite._opacityTime = fog._opacityTime;
  58.             sprite._tone = fog._tone;
  59.             sprite._toneTarget = fog._toneTarget;
  60.             sprite._toneTime = fog._toneTime;
  61.         }
  62.         this.addChild(sprite);
  63.         this._sortChildren();
  64.         GabeMZ.FogEffects.fogList[layer] = sprite;
  65.     };
  66.  
  67.     Spriteset_Fog.prototype._sortChildren = function() {
  68.         this.children.sort(this._compareChildOrder.bind(this));
  69.     };
  70.  
  71.     Spriteset_Fog.prototype._compareChildOrder = function(a, b) {
  72.         if (a.z !== b.z) {
  73.             return a.z - b.z;
  74.         } else if (a.y !== b.y) {
  75.             return a.y - b.y;
  76.         } else {
  77.             return a.spriteId - b.spriteId;
  78.         }
  79.     };
  80.  
  81.     Spriteset_Fog.prototype.refreshFogList = function() {
  82.         if (GabeMZ.FogEffects.tempFog.length > 0) {
  83.             GabeMZ.FogEffects.tempFog.forEach(fog => {
  84.                 this.removeChild(GabeMZ.FogEffects.fogList[fog[1]]);
  85.                 GabeMZ.FogEffects.fogList[fog[1]] = null;
  86.                 if (fog[0]) this.createFog(fog[0], fog[1]);
  87.             });
  88.         } else {
  89.             this.clearList();
  90.         }
  91.         GabeMZ.FogEffects.needRefresh = false;
  92.     };
  93.  
  94.     Spriteset_Fog.prototype.clearList = function() {
  95.         GabeMZ.FogEffects.fogList.forEach(fog => {this.removeChild(fog)});
  96.         GabeMZ.FogEffects.fogList = [];
  97.     };

Lv2.观梦者

梦石
0
星屑
879
在线时间
95 小时
注册时间
2025-2-15
帖子
49
2
发表于 2025-10-11 21:49:07 | 只看该作者
楼主在1楼怎么写着RUBY 代码呢?
看着像是JavaScript的代码啊,是Project1这里只设置了RUBY 代码吗?

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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-10-19 02:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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