Project1

标题: 超简单雾功能 [打印本页]

作者: 红灯    时间: 2010-10-31 21:42
标题: 超简单雾功能
又是雾= =!
之前发的那个是有点复杂,后来想想其实可以借助远景图的设置来实现简单的雾功能,于是弄了这个。
  1. =begin
  2. 简单的地图效果

  3. 先把雾效果图重命名为含“Fog”的名字(比如"010_Fog"),放入Parallax 文件夹。
  4. 使用时在地图设置的远景图里选择你想要的雾效果图片
  5. 可以设置x/y轴的移动速度。
  6. 就这么简单,不过缺点在于只能全局设定雾的参数,不能每张更改透明度和色调等。
  7. 适合怕麻烦想快速实现简单雾效果的同学。
  8.   BY 红灯
  9. =end

  10. #-------------------------全局设定参数----------------------------------
  11. module Fog_Set
  12.   
  13.   #雾的透明度设置
  14.   Fog_Opacity = 100

  15.   #雾的合成方式设置,0为正常,1为加法,2为减法
  16.   Fog_Blend = 0
  17.   
  18.   #雾的色调合成,数组内依次为 红,绿,蓝,数值范围0~255
  19.   Fog_Tone = [0,0,0]
  20.   
  21. end

  22. #-----------------------------------------



  23. class Spriteset_Map
  24.   
  25.   alias fog_in initialize
  26.   alias fog_up update
  27.   alias fog_dispose dispose
  28.   alias fog_up_par update_parallax
  29.   
  30.   def initialize
  31.     create_fog
  32.     fog_in
  33.   end

  34.   def create_fog
  35.     @fog = Plane.new(@viewport)
  36.     @fog.z = 999
  37.     @fog.opacity = Fog_Set::Fog_Opacity
  38.     @fog.blend_type = Fog_Set::Fog_Blend
  39.     @fog.tone.red = Fog_Set::Fog_Tone[0]
  40.     @fog.tone.green = Fog_Set::Fog_Tone[1]
  41.     @fog.tone.blue = Fog_Set::Fog_Tone[2]
  42.   end
  43.   
  44.   def update_parallax
  45.     return if $game_map.parallax_name.include?("Fog")
  46.     fog_up_par
  47.   end
  48.   
  49.   def update_fog
  50.     return unless $game_map.parallax_name.include?("Fog")
  51.     if @fog_name != $game_map.parallax_name
  52.       @fog_name = $game_map.parallax_name
  53.       if @fog.bitmap != nil
  54.         @fog.bitmap.dispose
  55.         @fog.bitmap = nil
  56.       end
  57.       if @fog_name != ""
  58.         @fog.bitmap = Cache.parallax(@fog_name)
  59.       end
  60.       Graphics.frame_reset
  61.     end
  62.     @fog.ox = $game_map.calc_parallax_x(@fog.bitmap)
  63.     @fog.oy = $game_map.calc_parallax_y(@fog.bitmap)
  64.   end
  65.   
  66.   def update
  67.     fog_up
  68.     update_fog
  69.   end
  70.   
  71.   def dispose
  72.     fog_dispose
  73.     dispose_fog
  74.   end
  75.   
  76.   def dispose_fog
  77.     @fog.dispose
  78.   end
  79.   
  80. end
复制代码



如果不怕麻烦,请移步http://rpg.blue/thread-157253-1-1.html  = =!

最后,简单的范例。
简单雾.rar (264.61 KB, 下载次数: 186)
作者: 壬穹雷光    时间: 2010-10-31 21:44
前排支持前辈~~~~~
作者: 38571240    时间: 2010-10-31 22:07
请问,如果设置一个开关来开启/关闭雾效果,该怎样做呢?
作者: qazsdwexc    时间: 2010-10-31 22:22
发现更好的,实在太需要了!感激不不尽尽!
作者: 红灯    时间: 2010-10-31 22:58
回复 38571240 的帖子

可以在create_fog 里加个条件分歧,当开关某打开时,既值为true时,不透明度用默认设置,为false 时,不透明度为0,就行了。

  if $game_switches[10]
      @fog.opacity = Fog_Set::Fog_Opacity
  else
      @fog.opacity = 0
end
作者: 狠、陌生    时间: 2010-11-1 06:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: summer92    时间: 2010-11-1 12:58
索引吧索引~~~~,希望效果好一点....LZ辛苦
作者: 九夜神尊    时间: 2010-11-2 22:32
:lol
作者: 黑崎一护    时间: 2010-11-3 19:17
我不懂脚本,请问这是可以直接使用的?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1