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

Project1

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

[已经解决] 有关“震动画面”这一指令的脚本改进

[复制链接]

Lv3.寻梦者

贝鲁耶的依叶森林
持镰的苍色水野

梦石
2
星屑
644
在线时间
562 小时
注册时间
2007-4-8
帖子
1304

第4届短篇游戏比赛季军短篇八RM组亚军

跳转到指定楼层
1
发表于 2014-3-26 20:26:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑
本帖最后由 水野·迪尔 于 2014-3-26 20:50 编辑

RM系列事件指令中的【震动画面】选项只对地图有效,
即震动的时候显示在画面上的图片并不会跟随震动,
_(:з」∠)_ 这样一来如果游戏做成了全图片类型的AVG样式的话,
那么这个指令用了压根没效果……
很久以前论坛的亿万星辰发布过XP的震动脚本,可以让图片一起震动起来,
于是请问有谁可以改进为VA可以使用的吗?

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 真·地震                             BY 亿万星辰@2005
  3. #==============================================================================
  4. # ■ Spriteset_Map
  5. #------------------------------------------------------------------------------
  6. #  处理地图画面活动块和元件的类。本类在
  7. # Scene_Map 类的内部使用。
  8. #==============================================================================
  9.  
  10. class Spriteset_Map
  11. #--------------------------------------------------------------------------
  12. # ● 刷新画面
  13. #--------------------------------------------------------------------------
  14. def update
  15.   # 如果远景与当前情况不同
  16.   if @panorama_name != $game_map.panorama_name or
  17.     @panorama_hue != $game_map.panorama_hue
  18.     @panorama_name = $game_map.panorama_name
  19.     @panorama_hue = $game_map.panorama_hue
  20.     if @panorama.bitmap != nil
  21.     @panorama.bitmap.dispose
  22.     @panorama.bitmap = nil
  23.     end
  24.     if @panorama_name != ""
  25.     @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  26.     end
  27.     Graphics.frame_reset
  28.   end
  29.   # 如果雾与当前的情况不同
  30.   if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  31.     @fog_name = $game_map.fog_name
  32.     @fog_hue = $game_map.fog_hue
  33.     if @fog.bitmap != nil
  34.     @fog.bitmap.dispose
  35.     @fog.bitmap = nil
  36.     end
  37.     if @fog_name != ""
  38.     @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  39.     end
  40.     Graphics.frame_reset
  41.   end
  42.   # 刷新元件地图
  43.   @tilemap.ox = $game_map.display_x / 4
  44.   @tilemap.oy = $game_map.display_y / 4
  45.   @tilemap.update
  46.   # 刷新远景平面
  47.   @panorama.ox = $game_map.display_x / 8
  48.   @panorama.oy = $game_map.display_y / 8
  49.   # 刷新雾平面
  50.   @fog.zoom_x = $game_map.fog_zoom / 100.0
  51.   @fog.zoom_y = $game_map.fog_zoom / 100.0
  52.   @fog.opacity = $game_map.fog_opacity
  53.   @fog.blend_type = $game_map.fog_blend_type
  54.   @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  55.   @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  56.   @fog.tone = $game_map.fog_tone
  57.   # 刷新角色精灵光标
  58.   for sprite in @character_sprites
  59.     sprite.update
  60.   end
  61.   # 刷新天候图形
  62.   @weather.type = $game_screen.weather_type
  63.   @weather.max = $game_screen.weather_max
  64.   @weather.ox = $game_map.display_x / 4
  65.   @weather.oy = $game_map.display_y / 4
  66.   @weather.update
  67.   # 刷新图片
  68.   for sprite in @picture_sprites
  69.     sprite.update
  70.   end
  71.   # 刷新计时器精灵光标
  72.   @timer_sprite.update
  73.   # 设置画面的色调与震动位置
  74. #  @viewport1.tone = $game_screen.tone
  75. #  @viewport1.ox = (-1) ** rand(2) * $game_screen.shake
  76. #  @viewport1.oy = (-1) ** rand(2) * $game_screen.shake
  77.   #让图片也可以震动
  78.   @viewport2.tone = $game_screen.tone
  79.   @viewport2.ox = (-1) ** rand(2) * $game_screen.shake
  80.   @viewport2.oy = (-1) ** rand(2) * $game_screen.shake
  81.   # 设置画面的闪烁色
  82.   @viewport3.color = $game_screen.flash_color
  83.   # 刷新视图
  84.   @viewport1.update
  85.   @viewport2.update
  86.   @viewport3.update
  87. end
  88. end
  89.  
  90. #==============================================================================
  91. # ■ Spriteset_Battle
  92. #------------------------------------------------------------------------------
  93. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  94. # 的内部使用。
  95. #==============================================================================
  96.  
  97. class Spriteset_Battle
  98. #--------------------------------------------------------------------------
  99. # ● 刷新画面
  100. #--------------------------------------------------------------------------
  101. def update
  102.   # 刷新角色的活动块 (对应角色的替换)
  103.   @actor_sprites[0].battler = $game_party.actors[0]
  104.   @actor_sprites[1].battler = $game_party.actors[1]
  105.   @actor_sprites[2].battler = $game_party.actors[2]
  106.   @actor_sprites[3].battler = $game_party.actors[3]
  107.   # 如果战斗背景文件名与当下不同
  108.   if @battleback_name != $game_temp.battleback_name
  109.     @battleback_name = $game_temp.battleback_name
  110.     if @battleback_sprite.bitmap != nil
  111.     @battleback_sprite.bitmap.dispose
  112.     end
  113.     @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  114.     @battleback_sprite.src_rect.set(0, 0, 640, 320)
  115.   end
  116.   # 刷新战斗者的精灵光标
  117.   for sprite in @enemy_sprites + @actor_sprites
  118.     sprite.update
  119.   end
  120.   # 刷新天气图形
  121.   @weather.type = $game_screen.weather_type
  122.   @weather.max = $game_screen.weather_max
  123.   @weather.update
  124.   # 刷新图片精灵光标
  125.   for sprite in @picture_sprites
  126.     sprite.update
  127.   end
  128.   # 刷新计时器精灵光标
  129.   @timer_sprite.update
  130.   # 设置画面的色调与震动位置
  131. #  @viewport1.tone = $game_screen.tone
  132. #  @viewport1.ox = (-1) ** rand(2) * $game_screen.shake
  133. #  @viewport1.oy = (-1) ** rand(2) * $game_screen.shake
  134.   #让图片也可以震动
  135.   @viewport2.tone = $game_screen.tone
  136.   @viewport2.ox = (-1) ** rand(2) * $game_screen.shake
  137.   @viewport2.oy = (-1) ** rand(2) * $game_screen.shake
  138.   # 设置画面的闪烁色
  139.   @viewport4.color = $game_screen.flash_color
  140.   # 刷新视图
  141.   @viewport1.update
  142.   @viewport2.update
  143.   @viewport4.update
  144. end
  145. end

最佳答案

查看完整内容

我来做个总结,直接插入下面这段脚本即可:
水野的主页><
头像来自于游戏《龙背上的骑兵3》主角——Zero

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20940
在线时间
9332 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

2
发表于 2014-3-26 20:26:49 | 只看该作者
本帖最后由 喵呜喵5 于 2014-3-27 14:15 编辑

我来做个总结,直接插入下面这段脚本即可:
  1. class Spriteset_Map
  2.     alias m520140327_update_viewports update_viewports
  3.     def update_viewports
  4.         @viewport2.ox = $game_map.screen.shake
  5.         m520140327_update_viewports
  6.     end
  7. end
复制代码

评分

参与人数 1星屑 +140 收起 理由
水野·迪尔 + 140 已经解决!感谢!

查看全部评分

回复

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20940
在线时间
9332 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

3
发表于 2014-3-26 20:35:57 | 只看该作者
事件指令-移动图片,然后专门写一个公共事件......
回复

使用道具 举报

Lv3.寻梦者

贝鲁耶的依叶森林
持镰的苍色水野

梦石
2
星屑
644
在线时间
562 小时
注册时间
2007-4-8
帖子
1304

第4届短篇游戏比赛季军短篇八RM组亚军

4
 楼主| 发表于 2014-3-26 20:52:26 | 只看该作者
喵呜喵5 发表于 2014-3-26 20:35
事件指令-移动图片,然后专门写一个公共事件......

这个尝试过但是麻烦过度了……
用移动来实现震动的效果光是计算出完美的坐标就得累死。
水野的主页><
头像来自于游戏《龙背上的骑兵3》主角——Zero
回复

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

5
发表于 2014-3-26 22:53:53 | 只看该作者
本帖最后由 Sion 于 2014-3-27 12:21 编辑

ctrl + shift + F 搜
  1. @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
复制代码
有两个,一个是地图画面,一个是战斗画面的。把@viewport2 改成 @viewport1 就好了
图片z坐标就可能不对了,在 Sprite_Picture 的 initialize 方法里,最后一排加个  self.z = 201 就能保证图片在最前面。
理论上来说,就是这样了。


----------------edited----------------------
这样改更好一点:
  1. @viewport1.ox = $game_map.screen.shake
复制代码
改成
  1. @viewport2.ox = @viewport1.ox = $game_map.screen.shake
复制代码
就行了
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
6
发表于 2014-3-26 23:06:41 手机端发表。 | 只看该作者
Sion 发表于 2014-3-26 22:53
ctrl + shift + F 搜有两个,一个是地图画面,一个是战斗画面的。把@viewport2 改成 @viewport1 就好了
图 ...

直接找到shake viewport1 的地方把 viewport2 一起 shake 不好?
现在意识到自己2了吧。

点评

屮你大爷  发表于 2014-3-27 12:03
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
7
发表于 2014-3-27 13:31:41 | 只看该作者
本帖最后由 紫苍焰 于 2014-3-27 13:48 编辑

……
就不能换个角度来想吗?
把图片做成地图用的远景图试试看?
反正你做AVG也用不着地图不是吗……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-24 23:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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