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

Project1

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

[有事请教] 怎么保持窗口大小一致的同时把人物和地图放大两倍?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
62
在线时间
11 小时
注册时间
2022-5-12
帖子
7
跳转到指定楼层
1
发表于 2023-3-9 05:29:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
有没有什么插件可以在保持窗口大小的同时地图和人物可以放大。
试过改行走图的大小,但人物和人物之间碰撞会重叠。所以想保持窗口的大小是816*624的情况下
游戏里的地图和人物的大小是原来的一倍
不知道有没有插件可以办到

0}%0U0~4~~KO4FL0_V9BE)O.png (8.04 KB, 下载次数: 17)

这个是原大小,人物相遇不会重叠,但是太小了

这个是原大小,人物相遇不会重叠,但是太小了

49{MJ5OKKG_UGVMOYT%~]R2.png (20.24 KB, 下载次数: 17)

这个是在原行走图大小上放大了一倍,人物相遇的时候重叠了

这个是在原行走图大小上放大了一倍,人物相遇的时候重叠了

Lv4.逐梦者

梦石
0
星屑
5114
在线时间
333 小时
注册时间
2021-2-9
帖子
69
2
发表于 2023-3-9 15:12:37 | 只看该作者
我也想知道保持窗口分辨率的同时···能让人物和建筑变大些···人物可以调整···建筑感觉好像麻烦啊···图块是48x48···放大一倍···就是96x96···地面和顶部应该可以···其他东西就是48放大到96···然后分成4个48吧···个人是这么觉得的····





回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
11 小时
注册时间
2022-5-12
帖子
7
3
 楼主| 发表于 2023-3-9 15:34:44 | 只看该作者
本帖最后由 子弹蛋蛋 于 2023-3-9 15:38 编辑
dumpiel 发表于 2023-3-9 15:12
我也想知道保持窗口分辨率的同时···能让人物和建筑变大些···人物可以调整···建筑感觉好像麻烦啊· ...


人物不知道怎么调整,行走图已经已经放大过了。人物相遇的时候,会叠在一起。建筑图块还没有画。看不懂你发的两个图,已经放大过放进去了,就是原大小人物不会重叠,放大之后人物相遇就重叠了。如果都可以直接放大素材图片解决的话就好了,可是就是碰撞图片和图片之间会重叠。

OE@VY$2~UQQQ8}~B`BRCLNV.png (96.97 KB, 下载次数: 16)

试过改过很多间距了,放大一倍后人物和人物之间相遇还是会叠在一起

试过改过很多间距了,放大一倍后人物和人物之间相遇还是会叠在一起

点评

不过放大后点地移动、和显示图片的坐标会错乱,需要自己优化。  发表于 2023-3-9 16:04
【Galv_ScreenZoom】我正在用的就是这个 https://galvs-scripts.com/2017/02/08/mv-screen-zoom/  发表于 2023-3-9 16:03
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7247
在线时间
474 小时
注册时间
2021-12-4
帖子
513
4
发表于 2023-3-9 18:02:16 | 只看该作者
JAVASCRIPT 代码复制下载
  1. (function(){
  2. Game_Map.prototype.tileWidth = function() { return 96; };
  3. Game_Map.prototype.tileHeight = function() { return 96; };
  4. ImageManager.loadTileset = function(filename, hue) {
  5.     return this.loadBitmap('img/tilesets96/', filename, hue, false);
  6. };
  7. ImageManager.reserveTileset = function(filename, hue, reservationId) {
  8.     return this.reserveBitmap('img/tilesets96/', filename, hue, false, reservationId);
  9. };
  10. ImageManager.requestTileset = function(filename, hue) {
  11.     return this.requestBitmap('img/tilesets96/', filename, hue, false);
  12. };
  13. })()

最简单的做法应该是直接使用上面这个简单的插件,然后把“img/tilesets/”文件夹下的图片全部复制一份,放大到2倍放到新建文件夹“img/tilesets96/”下面。
这样编辑器和运行时就会分别用48和96两种大小。至于角色行走图img/characters则直接在原文件夹下放大到2倍就可以。
不过要注意的是816*624是48的奇数倍而不是偶数倍,因此最好再配合使用官方插件Community_Basic.js把总宽高改成48的偶数倍(比如960*768)。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
11 小时
注册时间
2022-5-12
帖子
7
5
 楼主| 发表于 2023-3-9 20:57:06 | 只看该作者
本帖最后由 子弹蛋蛋 于 2023-3-9 21:00 编辑
小秋橙 发表于 2023-3-9 18:02
(function(){
Game_Map.prototype.tileWidth = function() { return 96; };
Game_Map.prototype.tileHeight ...


谢谢!人物成功放大了,太好了!但新建“img/tilesets96/”里已经放大了两倍的地图不显示了。人物可以走动,但图片不显示,不知道是哪一步出了差错,还劳大佬看看!

我先把代码做成js放进了“js/plugins”

但安装了之后是空白的,不太懂

用官方插件把屏幕分辨率改成(960*768)

将”img/tilesets/”整个文件复制了一份把里面的图片放大了2倍(768→1536),

重新命名为“tilesets96”放在了“img”里

然后运行游戏人物放大了,可地图不显示了,人可以走动
更多图片 小图 大图
组图打开中,请稍候......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
11 小时
注册时间
2022-5-12
帖子
7
6
 楼主| 发表于 2023-3-9 21:02:50 | 只看该作者
本帖最后由 子弹蛋蛋 于 2023-3-9 21:04 编辑

这个【Galv_ScreenZoom】 https://galvs-scripts.com/2017/02/08/mv-screen-zoom/  插件试了一下,镜头不会跟随主角移动!,谢谢好意!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4362
在线时间
550 小时
注册时间
2018-11-12
帖子
114
7
发表于 2023-3-10 03:50:39 | 只看该作者
本帖最后由 cenhangkai 于 2023-3-10 03:53 编辑
子弹蛋蛋 发表于 2023-3-9 21:02
这个【Galv_ScreenZoom】 https://galvs-scripts.com/2017/02/08/mv-screen-zoom/  插件试了一下,镜头不会 ...

  1. //-----------------------------------------------------------------------------
  2. //  Galv's Screen Zoom
  3. //-----------------------------------------------------------------------------
  4. //  For: RPGMAKER MV
  5. //  Galv_ScreenZoom.js
  6. //-----------------------------------------------------------------------------
  7. //  2020-09-14 - Version 1.2 - added plugin setting to disable battle zoom
  8. //  2017-03-10 - Version 1.1 - fixed bug in battle zoom, added battle scale
  9. //  2017-02-10 - Version 1.0 - release
  10. //-----------------------------------------------------------------------------
  11. // Terms can be found at:
  12. // galvs-scripts.com
  13. //-----------------------------------------------------------------------------

  14. var Imported = Imported || {};
  15. Imported.Galv_ScreenZoom = true;

  16. var Galv = Galv || {};              // Galv's main object
  17. Galv.ZOOM = Galv.ZOOM || {};          // Galv's stuff


  18. //-----------------------------------------------------------------------------
  19. /*:
  20. * @plugindesc (v.1.2) 放大游戏像素
  21. *
  22. * @author Galv - galvs-scripts.com
  23. *
  24. * @param 放大倍数
  25. * @desc 默认2倍
  26. * @default 2
  27. *
  28. * @param 禁用缩放的开关
  29. * @desc 请填写开关的ID,默认1号开关。开启时恢复原本大小,关闭时放大。
  30. * @default 1
  31. *
  32. * @help
  33. *  
  34. *   Galv's Screen Zoom (CHK 改)
  35. * ----------------------------------------------------------------------------
  36. * 1.即插即用,仅限放大城镇,不包含战斗
  37. * 2.新增点地移动的优化
  38. * 3.修复原插件用老存档时会报错的BUG
  39. * 4.显示图片的坐标问题,你可以缩小后再显示图片。
  40. * 鄙人自制的游戏基本不显示图片,故并没有优化的打算。
  41. */



  42. //-----------------------------------------------------------------------------
  43. //  CODE STUFFS
  44. //-----------------------------------------------------------------------------

  45. (function() {

  46. Galv.ZOOM.battleZoomEnabled = false;       
  47. Galv.ZOOM.battleScale = 1;
  48. Galv.ZOOM.FDBS = Number(PluginManager.parameters('GALV_ScreenZoom')["放大倍数"]);
  49. Galv.ZOOM.SFKG = Number(PluginManager.parameters('GALV_ScreenZoom')["禁用缩放的开关"]);

  50. Galv.ZOOM.setTo = function(x,y) {
  51.         if ($gameScreen._zoomScale == 1) {
  52.                 $gameScreen._zoomX = x;
  53.                 $gameScreen._zoomY = y;
  54.         }
  55. };

  56. Galv.ZOOM.move = function(x,y,scale,duration) {
  57.         $gameScreen.startZoom(x,y,scale,duration);
  58. };

  59. Galv.ZOOM.center = function(scale,duration) {
  60.         var x = Graphics.boxWidth / 2;
  61.         var y = Graphics.boxHeight / 2;
  62.         $gameScreen.startZoom(x,y,scale,duration);
  63. };

  64. Galv.ZOOM.target = function(id,scale,duration) {
  65.         if (id <= 0) {
  66.                 var target = $gamePlayer;
  67.         } else {
  68.                 var target = $gameMap.event(id);
  69.         }
  70.         var x = target.screenX();
  71.         var y = target.screenY() - 12 - scale;
  72.         $gameScreen.startZoom(x,y,scale,duration);
  73. };

  74. Galv.ZOOM.restore = function(duration) {
  75.         var x = Graphics.boxWidth / 2;
  76.         var y = Graphics.boxHeight / 2;
  77.         $gameScreen.startZoom(x,y,1,duration);
  78. };

  79. Galv.ZOOM.saveZoomData = function() {
  80.         if (!$gameSystem._savedZoom) return;
  81.         $gameSystem._savedZoom.x = Number($gameScreen._zoomX);
  82.         $gameSystem._savedZoom.xTarget = Number($gameScreen._zoomXTarget);
  83.         $gameSystem._savedZoom.y = Number($gameScreen._zoomY);
  84.         $gameSystem._savedZoom.yTarget = Number($gameScreen._zoomYTarget);
  85.         $gameSystem._savedZoom.scale = Number($gameScreen._zoomScale);
  86.         $gameSystem._savedZoom.scaleTarget = Number($gameScreen._zoomScaleTarget);
  87.         $gameSystem._savedZoom.duration = Number($gameScreen._zoomDuration);
  88. };


  89. //-----------------------------------------------------------------------------
  90. //  GAME SYSTEM
  91. //-----------------------------------------------------------------------------

  92. Galv.ZOOM.Game_System_initialize = Game_System.prototype.initialize;
  93. Game_System.prototype.initialize = function() {
  94.         Galv.ZOOM.Game_System_initialize.call(this);
  95.         var cx = Graphics.boxWidth / 2;
  96.         var cy = Graphics.boxHeight / 2
  97.         this._savedZoom = {
  98.                 x: cx,
  99.                 y: cy,
  100.                 xTarget: cx,
  101.                 yTarget: cy,
  102.                 scale: 1,
  103.                 scaleTarget: 1,
  104.                 duration: 0
  105.         }
  106. };


  107. //-----------------------------------------------------------------------------
  108. //  GAME SCREEN
  109. //-----------------------------------------------------------------------------

  110. Galv.ZOOM.Game_Screen_startZoom = Game_Screen.prototype.startZoom;
  111. Game_Screen.prototype.startZoom = function(x, y, scale, duration) {
  112.        
  113.         if (!Galv.ZOOM.battleZoomEnabled && $gameParty.inBattle()) {
  114.                 return Galv.ZOOM.Game_Screen_startZoom.call(this,x, y, scale, duration)
  115.         }
  116.        
  117.         Galv.ZOOM.setTo(x,y);

  118.         var cx = Graphics.boxWidth / 2;
  119.         if (x < 0) {
  120.                 x = this._zoomX;
  121.         } else if (x != cx) {
  122.                 var pox = Graphics.boxWidth / (scale * 2 - 2);
  123.                 var difX = cx - x;
  124.                 if (difX != 0) difX = (difX / cx) * pox;
  125.                 x = x - difX;
  126.         }

  127.         var cy = Graphics.boxHeight / 2;       
  128.         if (y < 0) {
  129.                 y = this._zoomY;
  130.         } else if (y != cy) {
  131.                 var poy = Graphics.boxHeight / (scale * 2 - 2);
  132.                 var difY = cy - y;
  133.                 if (difY != 0) difY = (difY / cy) * poy;
  134.                 y = y - difY;
  135.         }

  136.         this._zoomXTarget = Math.min(Graphics.boxWidth,Math.max(x,0));
  137.         this._zoomYTarget = Math.min(Graphics.boxHeight,Math.max(y,0));

  138.     this._zoomScaleTarget = scale < 0 ? this._zoomScale : scale;
  139.     //this._zoomDuration = duration || 60;
  140.         this._zoomDuration = duration;
  141.         this._BeiShu = scale;
  142. };

  143. Galv.ZOOM.Game_Screen_updateZoom = Game_Screen.prototype.updateZoom;
  144. Game_Screen.prototype.updateZoom = function() {
  145.         if (!Galv.ZOOM.battleZoomEnabled && $gameParty.inBattle()) {
  146.                 return Galv.ZOOM.Game_Screen_updateZoom.call(this);
  147.         }
  148.         //如果允许双倍缩放屏幕 CHK
  149.         if (!$gameParty.inBattle()) {
  150.             if (!$gameSwitches.value(Galv.ZOOM.SFKG)) {
  151.                   if (this._BeiShu==1) this._wt = SceneManager._scene.fadeSpeed()+1;
  152.                   if (this._wt && this._wt>0) this._wt --;
  153.                   var s = this._wt?5:0;
  154.               $gameScreen.startZoom($gamePlayer.screenX(),$gamePlayer.screenY()-14,Galv.ZOOM.FDBS,s);
  155.             } else {
  156.                   if (this._BeiShu==Galv.ZOOM.FDBS) this._wt = SceneManager._scene.fadeSpeed()*Galv.ZOOM.FDBS;
  157.                   if (this._wt && this._wt>0) this._wt --;
  158.                   var s = this._wt?5:0;
  159.               $gameScreen.startZoom($gamePlayer.screenX(),$gamePlayer.screenY()-13,1,s);       
  160.             }
  161.         };//
  162.     if (this._zoomDuration >= 0) {
  163.         var d = this._zoomDuration || 1;
  164.         var t = this._zoomScaleTarget;
  165.         this._zoomScale = (this._zoomScale * (d - 1) + t) / d;
  166.                 this._zoomX = (this._zoomX * (d - 1) + this._zoomXTarget) / d;
  167.                 this._zoomY = (this._zoomY * (d - 1) + this._zoomYTarget) / d;       
  168.         if (this._zoomDuration > 0) this._zoomDuration--;
  169.     }
  170. };

  171. // Overwrite
  172. Game_Screen.prototype.clearZoom = function() {
  173.         if (!$gameSystem._savedZoom) return;
  174.         this._zoomX = Number($gameSystem._savedZoom.x);
  175.         this._zoomXTarget = Number($gameSystem._savedZoom.xTarget);
  176.         this._zoomY = Number($gameSystem._savedZoom.y);
  177.         this._zoomYTarget = Number($gameSystem._savedZoom.yTarget);
  178.         this._zoomScale = Number($gameSystem._savedZoom.scale);
  179.         this._zoomScaleTarget = Number($gameSystem._savedZoom.scaleTarget);
  180.         this._zoomDuration = Number($gameSystem._savedZoom.duration);
  181. };


  182. Galv.ZOOM.Game_Screen_onBattleStart = Game_Screen.prototype.onBattleStart;
  183. Game_Screen.prototype.onBattleStart = function() {
  184.         Galv.ZOOM.saveZoomData();
  185.         Galv.ZOOM.dontSave = true;
  186.         Galv.ZOOM.Game_Screen_onBattleStart.call(this);
  187. };

  188. Game_Screen.prototype.resetBattleZoom = function() {
  189.     if (Galv.ZOOM.battleZoomEnabled)  {
  190.         this._zoomX = Graphics.width / 2;
  191.         this._zoomXTarget = Graphics.width / 2;
  192.         this._zoomY = -7200;
  193.         this._zoomYTarget = -7200;
  194.         this._zoomScale = Galv.ZOOM.battleScale;
  195.         this._zoomScaleTarget = Galv.ZOOM.battleScale;
  196.         this._zoomDuration = 0;
  197.         Galv.ZOOM.move(Graphics.width/2,Graphics.height/2,1,45);
  198.         } else {
  199.         this._zoomX = Graphics.boxWidth / 2;
  200.         this._zoomXTarget = Graphics.boxWidth / 2;
  201.         this._zoomY = Graphics.boxHeight / 2;
  202.         this._zoomYTarget = Graphics.boxHeight / 2
  203.         this._zoomScale = 1;
  204.         this._zoomScaleTarget = 1;
  205.         this._zoomDuration = 0;       
  206.         };
  207. };

  208. //矫正屏幕缩放时的点击地面坐标
  209. var _DJGame_Map_canvasToMapX = Game_Map.prototype.canvasToMapX;
  210. Game_Map.prototype.canvasToMapX = function(x) {
  211.         if ($gameSwitches.value(Galv.ZOOM.SFKG)) return _DJGame_Map_canvasToMapX.call(this,x);
  212.     var tileWidth = this.tileWidth()*Galv.ZOOM.FDBS;
  213.     var originX = this._displayX * tileWidth;
  214.     var mapX = Math.floor((originX + x+$gameScreen.zoomX()*(Galv.ZOOM.FDBS-1)) / tileWidth);
  215.     return this.roundX(mapX);
  216. };
  217. var _DJGame_Map_canvasToMapY = Game_Map.prototype.canvasToMapY;
  218. Game_Map.prototype.canvasToMapY = function(y) {
  219.         if ($gameSwitches.value(Galv.ZOOM.SFKG)) return _DJGame_Map_canvasToMapY.call(this,y);
  220.     var tileHeight = this.tileHeight()*Galv.ZOOM.FDBS;
  221.     var originY = this._displayY * tileHeight;
  222.     var mapY = Math.floor((originY + y+$gameScreen.zoomY()*(Galv.ZOOM.FDBS-1)) / tileHeight);
  223.     return this.roundY(mapY);
  224. };

  225. //-----------------------------------------------------------------------------
  226. //  SCENE MAP
  227. //-----------------------------------------------------------------------------

  228. Galv.ZOOM.Scene_Map_start = Scene_Map.prototype.start;
  229. Scene_Map.prototype.start = function() {
  230.         $gameScreen.clearZoom();
  231.         Galv.ZOOM.Scene_Map_start.call(this);
  232. };

  233. Galv.ZOOM.Scene_Map_terminate = Scene_Map.prototype.terminate;
  234. Scene_Map.prototype.terminate = function() {
  235.         if (!Galv.ZOOM.dontSave) Galv.ZOOM.saveZoomData();
  236.         Galv.ZOOM.Scene_Map_terminate.call(this);
  237. };


  238. //-----------------------------------------------------------------------------
  239. //  SCENE BATTLE
  240. //-----------------------------------------------------------------------------

  241. Galv.ZOOM.Scene_Battle_start = Scene_Battle.prototype.start;
  242. Scene_Battle.prototype.start = function() {
  243.         $gameScreen.resetBattleZoom();
  244.         Galv.ZOOM.Scene_Battle_start.call(this);
  245. };

  246. Galv.ZOOM.Scene_Battle_terminate = Scene_Battle.prototype.terminate;
  247. Scene_Battle.prototype.terminate = function() {
  248.         Galv.ZOOM.dontSave = false;
  249.         Galv.ZOOM.Scene_Battle_terminate.call(this);
  250. };

  251. })();
复制代码

//————————————————————
这是自用的。官网的那个也能做到,不过要并行事件一直并行。
希望对你有所帮助。

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7247
在线时间
474 小时
注册时间
2021-12-4
帖子
513
8
发表于 2023-3-10 09:21:19 | 只看该作者
子弹蛋蛋 发表于 2023-3-9 20:57
谢谢!人物成功放大了,太好了!但新建“img/tilesets96/”里已经放大了两倍的地图不显示了。人物可以走 ...

好奇怪呢,如果tilesets96下面同名文件不存在也应该是报错而不是黑屏呀……要不截图看看两个文件夹下面都是什么样子的,还有游戏中按F12控制台有什么报错吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6117
在线时间
1557 小时
注册时间
2011-6-14
帖子
520
9
发表于 2023-3-10 18:21:17 | 只看该作者
可以使用       
Drill_up的地图镜头插件,我的游戏默认是1920*1080分辨率,使用mv的默认地块会看起来很小,使用Drill_up的插件就可以同时放大人物和地块,事件是正常触发的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
11 小时
注册时间
2022-5-12
帖子
7
10
 楼主| 发表于 2023-3-12 23:54:31 | 只看该作者
小秋橙 发表于 2023-3-10 09:21
好奇怪呢,如果tilesets96下面同名文件不存在也应该是报错而不是黑屏呀……要不截图看看两个文件夹下面都 ...

谢谢你,已经找到对应插件解决了!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 14:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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