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

Project1

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

[已经解决] 如何在战斗场景中取得当前地图的雾图形及其设置

[复制链接]

Lv2.观梦者 (版主)

脚本白痴

梦石
0
星屑
412
在线时间
902 小时
注册时间
2007-7-9
帖子
1403
跳转到指定楼层
1
发表于 2014-8-26 18:09:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
这段脚本以及显示端口之类的脚本都已经设置好,战斗中雾图形也显示成功了
但是不能取得地图中的雾的移动。请问一下该怎么修改?
明明和Spriteset_Map中的脚本是一样的。这里就不能移动了……
  1. #=========================================================
  2.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  3.       @fog_name = $game_map.fog_name
  4.       @fog_hue = $game_map.fog_hue
  5.       if @fog.bitmap != nil
  6.         @fog.bitmap.dispose
  7.         @fog.bitmap = nil
  8.       end
  9.       if @fog_name != ""
  10.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  11.       end
  12.       Graphics.frame_reset
  13.     end
  14.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  15.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  16.     @fog.opacity = $game_map.fog_opacity
  17.     @fog.blend_type = $game_map.fog_blend_type
  18.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  19.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  20.         @fog.tone = $game_map.fog_tone
  21.     #==============================================================
复制代码

正统向RPG-大雄的高井山奇谈
https://rpg.blue/thread-369758-1-1.html
哆啦A梦RTP风格素材
https://rpg.blue/forum.php?mod=viewthread&tid=394608

Lv2.观梦者 (版主)

脚本白痴

梦石
0
星屑
412
在线时间
902 小时
注册时间
2007-7-9
帖子
1403
3
 楼主| 发表于 2014-8-26 21:04:53 | 只看该作者
十分感谢!问题解决了!

正统向RPG-大雄的高井山奇谈
https://rpg.blue/thread-369758-1-1.html
哆啦A梦RTP风格素材
https://rpg.blue/forum.php?mod=viewthread&tid=394608
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2014-8-26 19:54:58 | 只看该作者
本帖最后由 RyanBern 于 2014-8-26 20:11 编辑

按照@taroxd 的思路,做了一个子类,暂时没发现问题。
需要在Spriteset_Battle里面生成对象@fog = Plane_Fog.new(@viewport5, 地图ID),这个设置比较别扭,意思就是采用某某地图图块关联的雾图形来设置,否则一个个设置怪麻烦的。
然后该update和dispose的,别忘了。
RUBY 代码复制
  1. class Plane_Fog < Plane
  2.   attr_reader   :fog_name                 # 雾 文件名
  3.   attr_reader   :fog_hue                  # 雾 色相
  4.   attr_accessor :fog_blend_type           # 雾 混合方式
  5.   attr_accessor :fog_zoom                 # 雾 放大率
  6.   attr_accessor :fog_sx
  7.   attr_accessor :fog_sy
  8.   def initialize(viewport, tileset_id)
  9.     super(viewport)
  10.     self.z = 3000
  11.     tileset = $data_tilesets[tileset_id]
  12.     self.change_fog(tileset.fog_name, tileset.fog_hue)
  13.     @fog_opacity = tileset.fog_opacity
  14.     @fog_blend_type = tileset.fog_blend_type
  15.     @fog_zoom = tileset.fog_zoom
  16.     @fog_sx = tileset.fog_sx
  17.     @fog_sy = tileset.fog_sy
  18.     # 初始化雾的各种信息
  19.     @fog_ox = 0
  20.     @fog_oy = 0
  21.     @fog_tone = Tone.new(0, 0, 0, 0)
  22.     @fog_tone_target = Tone.new(0, 0, 0, 0)
  23.     @fog_tone_duration = 0
  24.     @fog_opacity_duration = 0
  25.     @fog_opacity_target = 0
  26.   end
  27.   def dispose
  28.     super
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 开始变更雾的色调
  32.   #     tone     : 色调
  33.   #     duration : 时间
  34.   #--------------------------------------------------------------------------
  35.   def start_fog_tone_change(tone, duration)
  36.     @fog_tone_target = tone.clone
  37.     @fog_tone_duration = duration
  38.     if @fog_tone_duration == 0
  39.       @fog_tone = @fog_tone_target.clone
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 开始变更雾的不透明度
  44.   #     opacity  : 不透明度
  45.   #     duration : 时间
  46.   #--------------------------------------------------------------------------
  47.   def start_fog_opacity_change(opacity, duration)
  48.     @fog_opacity_target = opacity * 1.0
  49.     @fog_opacity_duration = duration
  50.     if @fog_opacity_duration == 0
  51.       @fog_opacity = @fog_opacity_target
  52.     end
  53.   end
  54.   def change_fog(name, hue)
  55.     # 雾与现在的情况有差异的情况下
  56.     if name != @fog_name || hue != @fog_hue
  57.       @fog_name = name
  58.       @fog_hue = hue
  59.       if self.bitmap != nil
  60.         @fog.bitmap.dispose
  61.         @fog.bitmap = nil
  62.       end
  63.       if @fog_name != ""
  64.         self.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  65.       end
  66.       Graphics.frame_reset
  67.     end
  68.   end
  69.   def update
  70.     @fog_ox -= @fog_sx / 8.0
  71.     @fog_oy -= @fog_sy / 8.0
  72.     # 处理雾的色调变更
  73.     if @fog_tone_duration >= 1
  74.       d = @fog_tone_duration
  75.       target = @fog_tone_target
  76.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  77.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  78.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  79.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  80.       @fog_tone_duration -= 1
  81.     end
  82.     # 处理雾的不透明度变更
  83.     if @fog_opacity_duration >= 1
  84.       d = @fog_opacity_duration
  85.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  86.       @fog_opacity_duration -= 1
  87.     end
  88.     # 刷新雾平面
  89.     self.zoom_x = @fog_zoom / 100.0
  90.     self.zoom_y = @fog_zoom / 100.0
  91.     self.opacity = @fog_opacity
  92.     self.blend_type = @fog_blend_type
  93.     self.ox = @fog_ox
  94.     self.oy = @fog_oy
  95.     self.tone = @fog_tone
  96.   end
  97. end

评分

参与人数 1星屑 +220 收起 理由
牛肉面 + 220 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 02:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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