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

Project1

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

[已经解决] 菜鸟级问题-----如何调节灯光

[复制链接]

Lv2.观梦者

梦石
0
星屑
370
在线时间
117 小时
注册时间
2012-10-2
帖子
140
跳转到指定楼层
1
发表于 2013-6-6 08:22:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我在自己的游戏里了使用了灯光脚本(注意是灯光脚本,不是视野阻碍系统)

但是我觉得那灯光的照应范围太少,怎么可以把它调大一点?

求高手指点一下,谢谢了

Lv3.寻梦者

Assassin-K

梦石
0
星屑
3598
在线时间
2281 小时
注册时间
2012-5-23
帖子
4065

贵宾

2
发表于 2013-6-9 00:34:25 | 只看该作者
不知道你指的是哪个的说。
如果是用光效图片的那种,直接修改素材。
如果不是,麻烦贴下脚本好吧?
(其实那种改数值的,慢慢摸索也能调适出来的……我会乱说~)

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢帮忙

查看全部评分


◆ROZONE◆
>洛子又要去流浪地球了……
>如果你看到我在线,又没动静,那只能说明我在挂机……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
370
在线时间
117 小时
注册时间
2012-10-2
帖子
140
3
 楼主| 发表于 2013-6-9 07:28:53 | 只看该作者
这种灯光系统是不是只能改图?

QQ图片20130609072240.jpg (37.89 KB, 下载次数: 29)

QQ图片20130609072240.jpg
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2013-6-9 08:02:28 手机端发表。 | 只看该作者
找到灯光脚本中显示视野的那部分,调整它的放大率就好了


少年你不把脚本贴出来我这么说你看的懂自己会改么?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
370
在线时间
117 小时
注册时间
2012-10-2
帖子
140
5
 楼主| 发表于 2013-6-9 08:27:14 | 只看该作者
喵呜喵5 发表于 2013-6-9 08:02
找到灯光脚本中显示视野的那部分,调整它的放大率就好了

新人比较愚笨,不好意思哈

现在就贴出脚本

话说怎么把脚本贴成有框框的样式啊·不会·= =




RUBY 代码复制
  1. =begin
  2.  
  3.   HN_Light version 1.0.1.0 for VX Ace
  4.  
  5.         by 半生
  6.  
  7.  
  8.   要HN_RG_BITMAP(ver 0.1.2.1以降)
  9.  
  10.  
  11. 2012/01/08 ver 1.0.1.2
  12.  
  13.  队列歩行の仲间に対応
  14.  
  15.  
  16. =end
  17.  
  18.  
  19. # ----- 在这里设定-----
  20.  
  21. module HN_Light
  22.  
  23.   # 简略化0:(精细)~2:(粗暴,负荷轻)
  24.  
  25.   SIMPLIFY = 1
  26.  
  27.  
  28.  
  29.   # 玩家的烛光类型使用的变量号码
  30.  
  31.   PLAYER_LIGHT_TYPE = 12
  32.  
  33.  
  34.   # 队友的烛光类型使用的变量号码
  35.  
  36.   FOLLOWER_LIGHT_TYPE = 12
  37.  
  38.  
  39.  
  40.   # 黑暗判断上使用的开关
  41.  
  42.   DARK_SWITCH = 13
  43.  
  44.  
  45.  
  46.   # 烛光事件识别用的正规表达式
  47.  
  48.   REGEX_LIGHT = /@LIGHT(\d+)/
  49.  
  50.  
  51.  
  52.   # 烛光图像的目录
  53.  
  54.   LIGHT_IMG_DIR = "Graphics/Pictures/"
  55.  
  56.  
  57.  
  58.   # 烛光Bitmap设定
  59.  
  60.   LIGHTS = [
  61.   # [FILENAME, CELLS, ZOOM, OFFSET_Y, HUE]
  62.  
  63.     ["light5",     1,  1.5,        0,   0],
  64.  
  65.     ["light2",     1,  1.0,        0,   0],
  66.  
  67.     ["light3",     1,  0.8,        0,   0],
  68.  
  69.     ["light4",     1,  1.0,      -16,   0],
  70.  
  71.     ["light5",     1,  2.0,        0,   0],
  72.  
  73.     ["light6",     1,  1.0,        0,   0],
  74.  
  75.     ["light7",     1,  3.0,      -16,   0],
  76.  
  77.     ["light1",     1,  0.5,        0,   0],
  78.  
  79.     ["light6",     1,  2.0,        0,   0],
  80.  
  81.   ]
  82.  
  83. end
  84.  
  85. #  ----- 在这里设定 -----
  86.  
  87.  
  88. module HN_Light
  89.  
  90.   # 事件mix-in用
  91.  
  92.   module LightEvent
  93.  
  94.     attr_reader :light_type
  95.  
  96.     def initialize
  97.  
  98.       super()
  99.  
  100.       @light_type = 0
  101.  
  102.     end
  103.  
  104.  
  105.     def check_light
  106.  
  107.       @light_type = 0
  108.  
  109.       return if @list.nil?
  110.  
  111.       @list.each do |command|
  112.  
  113.         break if @light_type > 0
  114.  
  115.         if command.code == 108 or command.code == 408
  116.  
  117.           command.parameters.each do |line|
  118.  
  119.             if line =~ REGEX_LIGHT
  120.  
  121.               @light_type = $1.to_i
  122.  
  123.               break
  124.  
  125.             end
  126.  
  127.           end
  128.  
  129.         end
  130.  
  131.       end # END @list.each
  132.  
  133.     end
  134.  
  135.  
  136.   end # END module LightEvent
  137.  
  138.  
  139.  
  140.  
  141.  
  142.   class Light
  143.  
  144.     attr_reader :bitmap
  145.  
  146.     attr_reader :cells
  147.  
  148.     attr_reader :width
  149.  
  150.     attr_reader :height
  151.  
  152.     attr_reader :ox
  153.  
  154.     attr_reader :oy
  155.  
  156.     def initialize(light_type, s_zoom = 1)
  157.  
  158.       light = LIGHTS[light_type - 1]
  159.  
  160.       if light.nil?
  161.  
  162.         # 本来不应该来这里
  163.  
  164.         @bitmap = Bitmap.new(32, 32)
  165.  
  166.         @cels = 1
  167.  
  168.         @zoom = 1.0
  169.  
  170.         @oy = 16
  171.  
  172.         @ox = 16
  173.  
  174.         @width  = 32
  175.  
  176.         @height = 32
  177.  
  178.       else
  179.  
  180.         @bitmap = Bitmap.new(LIGHT_IMG_DIR + light[0])
  181.  
  182.         @bitmap.invert()
  183.  
  184.         @cells = light[1].to_i
  185.  
  186.         @cells = 1 if (@cells < 1 or @cells > @bitmap.width)
  187.  
  188.         @zoom = light[2].to_f
  189.  
  190.         @zoom = 1.0 if @zoom <= 0.0
  191.  
  192.         @zoom /= s_zoom
  193.  
  194.         @width  = @bitmap.width / @cells
  195.  
  196.         @height = @bitmap.height
  197.  
  198.  
  199.         # 缩放处理
  200.  
  201.         if @zoom != 1.0
  202.  
  203.           new_width  = (@width * @zoom).round
  204.  
  205.           new_height = (@height * @zoom).round
  206.  
  207.           if new_width * new_height < 1
  208.  
  209.             @zoom = 1.0
  210.  
  211.           else
  212.  
  213.             @width = new_width
  214.  
  215.             @height = new_height
  216.  
  217.             new_bitmap = Bitmap.new(@width * @cells, @height)
  218.  
  219.             new_bitmap.stretch_blt(new_bitmap.rect,@bitmap, @bitmap.rect)
  220.  
  221.             @bitmap.dispose
  222.  
  223.             @bitmap = new_bitmap
  224.  
  225.           end
  226.  
  227.         end
  228.  
  229.         @ox = @width / 2
  230.  
  231.         @oy = @height / 2 - light[3].to_i / s_zoom
  232.  
  233.  
  234.         # 色相変换
  235.  
  236.         if ( (hue = light[4].to_i) != 0)
  237.  
  238.           @bitmap.hue_change(hue)
  239.  
  240.         end
  241.  
  242.       end
  243.  
  244.     end # End def initialize
  245.  
  246.  
  247.     # 色调转换
  248.  
  249.     def dispose
  250.  
  251.       @bitmap.dispose
  252.  
  253.       @bitmap = nil
  254.  
  255.     end
  256.  
  257.   end
  258.  
  259.  
  260. end
  261.  
  262.  
  263. class Game_Event
  264.  
  265.   include HN_Light::LightEvent
  266.  
  267.   alias :_hn_light__setup :setup_page unless method_defined?(:_hn_light__setup)
  268.  
  269.   def setup_page(new_page)
  270.  
  271.     _hn_light__setup(new_page)
  272.  
  273.     check_light()
  274.  
  275.   end
  276.  
  277. end
  278.  
  279.  
  280. class Game_Player
  281.  
  282.   def light_type
  283.  
  284.     return $game_variables[HN_Light::PLAYER_LIGHT_TYPE]
  285.  
  286.   end
  287.  
  288. end
  289.  
  290.  
  291. class Game_Follower
  292.  
  293.   def light_type
  294.  
  295.     return 0 if !self.visible?
  296.  
  297.     return $game_variables[HN_Light::FOLLOWER_LIGHT_TYPE]
  298.  
  299.   end
  300.  
  301. end
  302.  
  303.  
  304. class Game_Map
  305.  
  306.   attr_reader :light_events
  307.  
  308.  
  309.  
  310.   # 更新烛光事件列表
  311.  
  312.   def refresh_lights
  313.  
  314.     @light_events = []
  315.  
  316.     @events.values.each do |event|
  317.  
  318.       if (event.light_type > 0)
  319.  
  320.         @light_events.push(event)
  321.  
  322.       end
  323.  
  324.     end
  325.  
  326.   end
  327.  
  328.  
  329.   alias :_hn_light__setup_events :setup_events unless method_defined?(:_hn_light__setup_events)
  330.  
  331.   def setup_events
  332.  
  333.     _hn_light__setup_events()
  334.  
  335.     refresh_lights()
  336.  
  337.   end
  338.  
  339.  
  340.  
  341.   alias :_hn_light__refresh :refresh unless method_defined?(:_hn_light__refresh)
  342.  
  343.   def refresh
  344.  
  345.     _hn_light__refresh()
  346.  
  347.     refresh_lights()
  348.  
  349.   end
  350.  
  351. end
  352.  
  353.  
  354. class Sprite_Dark < Sprite
  355.  
  356.   @@base_color = Color.new(255,255,255)
  357.  
  358.  
  359.   def initialize(viewport = nil)
  360.  
  361.     super(viewport)
  362.  
  363.     @width = Graphics.width
  364.  
  365.     @height = Graphics.height
  366.  
  367.  
  368.     case HN_Light::SIMPLIFY
  369.  
  370.     when 1
  371.  
  372.       @zoom = 2
  373.  
  374.     when 2
  375.  
  376.       @zoom = 4
  377.  
  378.     else
  379.  
  380.       @zoom = 1
  381.  
  382.     end
  383.  
  384.     @width /= @zoom
  385.  
  386.     @height /= @zoom
  387.  
  388.     self.zoom_x = @zoom.to_f
  389.  
  390.     self.zoom_y = @zoom.to_f
  391.  
  392.  
  393.     self.bitmap = Bitmap.new(@width, @height)
  394.  
  395.     self.bitmap.fill_rect(self.bitmap.rect, @@base_color)
  396.  
  397.     self.blend_type = 2 # 混合型(减算)
  398.  
  399.     self.z = 500
  400.  
  401.     self.visible = false
  402.  
  403.     @light_cache = {}
  404.  
  405.   end
  406.  
  407.  
  408.   # 追加烛光
  409.  
  410.   def add_light(charactor)
  411.  
  412.     return if charactor.nil?
  413.  
  414.     light_type = charactor.light_type
  415.  
  416.     return if (light_type < 1 or light_type > HN_Light::LIGHTS.size)
  417.  
  418.     unless @light_cache.key?(light_type)
  419.  
  420.       @light_cache[light_type] = HN_Light::Light.new(light_type, @zoom)
  421.  
  422.     end
  423.  
  424.     light = @light_cache[light_type]
  425.  
  426.  
  427.     # 画面外什麽都不做
  428.  
  429.     if @zoom == 1
  430.  
  431.       return if (charactor.screen_x < 0  - light.width + light.ox)
  432.  
  433.       return if (charactor.screen_x > @width + light.ox)
  434.  
  435.       return if (charactor.screen_y < 0 - light.height + light.oy)
  436.  
  437.       return if (charactor.screen_y > @height + light.oy)
  438.  
  439.     else
  440.  
  441.       return if (charactor.screen_x < 0  - (light.width + light.ox) * @zoom)
  442.  
  443.       return if (charactor.screen_x > (@width + light.ox)  * @zoom)
  444.  
  445.       return if (charactor.screen_y < 0 - (light.height + light.oy) * @zoom)
  446.  
  447.       return if (charactor.screen_y > (@height + light.oy) * @zoom)
  448.  
  449.     end
  450.  
  451.  
  452.     # 动画判定
  453.  
  454.     if light.cells > 1
  455.  
  456.       index = (Graphics.frame_count / 4) % light.cells
  457.  
  458.       rect = Rect.new(index * light.width , 0, light.width, light.height)
  459.  
  460.     else
  461.  
  462.       rect = light.bitmap.rect
  463.  
  464.     end
  465.  
  466.     if @zoom != 1
  467.  
  468.       p_x = charactor.screen_x / @zoom - light.ox
  469.  
  470.       p_y = (charactor.screen_y - 16) / @zoom - light.oy
  471.  
  472.     else
  473.  
  474.       p_x = charactor.screen_x - light.ox
  475.  
  476.       p_y = charactor.screen_y - 16 - light.oy
  477.  
  478.     end
  479.  
  480.  
  481.     # 乗算合成(3)
  482.  
  483.     self.bitmap.blend_blt(p_x, p_y, light.bitmap, rect, 3)
  484.  
  485.   end
  486.  
  487.  
  488.  
  489.  
  490.   def refresh
  491.  
  492.     self.bitmap.fill_rect(self.bitmap.rect, @@base_color)
  493.  
  494.     $game_map.light_events.each do |event|
  495.  
  496.       next if HN_Light::LIGHTS[event.light_type - 1].nil?
  497.  
  498.       add_light(event)
  499.  
  500.     end
  501.  
  502.     add_light($game_player)
  503.  
  504.     $game_player.followers.each{|f| add_light(f)}
  505.  
  506.   end
  507.  
  508.  
  509.  
  510.   # 更新
  511.  
  512.   def update
  513.  
  514.     super
  515.  
  516.     refresh()
  517.  
  518.   end
  519.  
  520.  
  521.  
  522.   #--------------------------------------------------------------------------
  523.  
  524.   # ● 解放
  525.  
  526.   #--------------------------------------------------------------------------
  527.  
  528.   def dispose
  529.  
  530.     self.bitmap.dispose
  531.  
  532.     @light_cache.values.each do |light|
  533.  
  534.       light.dispose
  535.  
  536.     end
  537.  
  538.     super
  539.  
  540.   end
  541.  
  542. end
  543.  
  544.  
  545.  
  546. class Spriteset_Map  
  547.  
  548.   # 动画判定
  549.  
  550.   def create_dark
  551.  
  552.     @dark_sprite = Sprite_Dark.new(@viewport1)
  553.  
  554.   end
  555.  
  556.  
  557.   # 更新黑暗Sprite
  558.  
  559.   def update_dark
  560.  
  561.     if (@dark_sprite.visible = $game_switches[HN_Light::DARK_SWITCH])
  562.  
  563.       @dark_sprite.update
  564.  
  565.     end
  566.  
  567.   end
  568.  
  569.  
  570.   # 破弃黑暗Sprite
  571.  
  572.   def dispose_dark
  573.  
  574.     @dark_sprite.dispose
  575.  
  576.   end
  577.  
  578.  
  579.  
  580.   # 初期化
  581.  
  582.   alias :_dark__initialize :initialize unless private_method_defined?(:_dark__initialize)
  583.  
  584.   def initialize
  585.  
  586.     _dark__initialize()
  587.  
  588.     create_dark()
  589.  
  590.     update_dark()
  591.  
  592.   end
  593.  
  594.  
  595.  
  596.   # 更新
  597.  
  598.   alias :_dark__update :update unless method_defined?(:_dark__update)
  599.  
  600.   def update
  601.  
  602.     _dark__update()
  603.  
  604.     update_dark() if !@dark_sprite.nil? and !@dark_sprite.disposed?
  605.  
  606.   end
  607.  
  608.  
  609.  
  610.   # 结束处理
  611.  
  612.   alias :_dark__dispose :dispose unless method_defined?(:_dark__dispose)
  613.  
  614.   def dispose
  615.  
  616.     dispose_dark()
  617.  
  618.     _dark__dispose()
  619.  
  620.   end
  621.  
  622. end
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

6
发表于 2013-6-9 10:49:38 手机端发表。 | 只看该作者
1、尝试修改12号变量的数值
2、修改“# 烛光Bitmap设定”下面几行的zoom数值,也就是第二个逗号后面那个数字(比如第一行["light5",1,1.5,0,0],把1.5改成2.5试试看)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
370
在线时间
117 小时
注册时间
2012-10-2
帖子
140
7
 楼主| 发表于 2013-6-9 13:09:32 | 只看该作者
喵呜喵5 发表于 2013-6-9 10:49
1、尝试修改12号变量的数值
2、修改“# 烛光Bitmap设定”下面几行的zoom数值,也就是第二个逗号后面那个数 ...

用第二种方法可以确实解决灯光范围问题,谢谢了啊

另外还想问一下,想学习一下怎么使用这个脚本

这几个数字代表什么意思?

QQ图片20130609130839.jpg (42.92 KB, 下载次数: 34)

QQ图片20130609130839.jpg
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

8
发表于 2013-6-9 20:05:18 | 只看该作者
113340 发表于 2013-6-9 13:09
用第二种方法可以确实解决灯光范围问题,谢谢了啊

另外还想问一下,想学习一下怎么使用这个脚本

filename:烛光图片文件名
cells:貌似是设定烛光摇曳的动画?
zoom:缩放放大倍率
offset_Y:Y补偿,大概就是烛光不以玩家为中心这样的感觉,没用过
hue:色调

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
370
在线时间
117 小时
注册时间
2012-10-2
帖子
140
9
 楼主| 发表于 2013-6-9 22:36:28 | 只看该作者
感觉会用了一点·谢谢楼上的帮忙了啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 12:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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