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

Project1

 找回密码
 注册会员
搜索

(已解决)如何在事件中变更游戏窗口大小

查看数: 2312 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-10-26 14:03

正文摘要:

本帖最后由 翠靈月 于 2016-10-26 16:06 编辑 在论坛搜索了一下大部分都是窗口变大画面跟着放大的 不过我需要的不是放大画面,而是只有窗口大小改变(例如原本是400x400,触发事件变成500x500) 有人说用Graphics. ...

回复

RaidenInfinity 发表于 2016-10-26 15:56:08
本帖最后由 RaidenInfinity 于 2016-10-26 15:57 编辑

因为代码比较长所以事件指令装不下了。

在脚本编辑器插入这个脚本:
RUBY 代码复制
  1. module SceneManager
  2.  
  3.   def self.resize_screen(nw,nh)
  4.     w = Graphics.width
  5.     h = Graphics.height
  6.     Graphics.resize_screen(nw,nh)
  7.     scene.dispose_spriteset
  8.     scene.create_spriteset
  9.     scene.dispose_all_windows
  10.     scene.create_all_windows
  11.     px = $game_player.real_x
  12.     py = $game_player.real_y
  13.     cx = $game_map.screen_tile_x / 2
  14.     cy = $game_map.screen_tile_y / 2
  15.     if px < cx || px + cx > $game_map.width
  16.       dx = 0
  17.     else
  18.       dx = px - cx
  19.     end
  20.     if py < cy || py + cy > $game_map.height
  21.       dy = 0
  22.     else
  23.       dy = py - cy
  24.     end   
  25.     $game_map.set_display_pos(dx,dy)
  26.   end
  27.  
  28. end


然后在事件脚本指令调用:
RUBY 代码复制
  1. SceneManager.resize_screen(长,宽)

点评

可以了!再次感谢  发表于 2016-10-26 16:04

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
怪蜀黍 + 250 + 1 楼主认可的解答

查看全部评分

翠靈月 发表于 2016-10-26 15:13:03
本帖最后由 翠靈月 于 2016-10-26 15:34 编辑
RaidenInfinity 发表于 2016-10-26 15:06
估计你选择的分辨率不是32的倍数。
实际上,如果你的分辨率不是32的倍数,就算你是在游戏开始时就套用这个 ...


好像不是倍率的问题,因为我main订320*160+事件设640*320,画面也会偏移到最右下角
不过修改一下最后一句的座标位置应该就行了
RaidenInfinity 发表于 2016-10-26 15:06:44
估计你选择的分辨率不是32的倍数
实际上,如果你的分辨率不是32的倍数,就算你是在游戏开始时就套用这个倍率,你也会发现地图移动会产生偏移(尤其是走到边沿的时候)。
翠靈月 发表于 2016-10-26 14:59:54
RaidenInfinity 发表于 2016-10-26 14:39
这个问题是因为Spriteset_Map和各窗口创建的时候已经套用了原本Graphics的大小。解决的办法:

使用此事件 ...

非常感谢!
不过有个问题,就是画面放大后画面会偏离主角的所在位置(或者该说主角不在画面中心)
用场景移动虽然可以找回主角的位置,但在移动前还是会先闪现偏移的画面(即使在脚本执行前执行淡出画面也是)
RaidenInfinity 发表于 2016-10-26 14:39:48
这个问题是因为Spriteset_Map和各窗口创建的时候已经套用了原本Graphics的大小。解决的办法:

使用此事件脚本指令:
RUBY 代码复制
  1. w = Graphics.width; h = Graphics.height
  2. nw = 544; nh = 416
  3. Graphics.resize_screen(nw,nh)
  4. SceneManager.scene.dispose_spriteset
  5. SceneManager.scene.create_spriteset
  6. SceneManager.scene.dispose_all_windows
  7. SceneManager.scene.create_all_windows
  8. dw = w / 32 * nw
  9. dh = h / 32 * nh
  10. $game_map.set_display_pos(dw,dh)


将544和416更改成你想要的分辨率。

另外我建议在使用此脚本之前使用淡出画面,之后则使用淡出画面,呈现效果可能会比较好。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-7-22 16:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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