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

Project1

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

[已经解决] 烛光系统的问题.

[复制链接]

Lv2.观梦者

梦石
0
星屑
473
在线时间
487 小时
注册时间
2011-10-12
帖子
407
1
发表于 2014-4-5 23:39:34 | 显示全部楼层
本帖最后由 gaogs123456 于 2014-4-5 23:41 编辑

你可以用这个版本的视界限制,完全没有问题。
顺便可以下下我不久前制作完成的RPG玩玩,工程未加密。
http://pan.baidu.com/s/1o6jWrNk
另外插入脚本用‘添加代码’这个功能会更好。
  1. #==============================================================================
  2. # ★ RGSS3_視界制限 Ver1.11
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. 設定した番号のマップだけ視界を制限します。

  8. アクター、職業、武器(防具)のメモ欄に下のようなタグを書き込むことで
  9. 視界制限のサイズを補正することができます。
  10. 例)<視界補正 32>
  11. 視界が 32 ドット広がります。
  12. 視界補正値の計算をおこなうのは戦闘メンバーのみとなります。

  13. ゲーム変数(初期設定では9番)を使って視界のサイズを補正できます。

  14. 実際の視界制限サイズは上記の設定値をすべて加算したものになります。
  15. ただし、マップに視界制限値が設定されていない場合はすべて無効です。

  16. 画面全体を覆うスプライトを毎フレーム再描画しているため
  17. 多少重くなります。

  18. 動作に必要な画像
  19.   Graphics/System/sight_shadow.png
  20.   
  21. 使用するゲーム変数(初期設定)
  22.   0009

  23. 2012.03.07  Ver1.11
  24.  ・メニューから復帰したときに視界制限が途切れる不具合を修正
  25.   
  26. 2012.02.05  Ver1.1
  27.   ・タイマーが隠れてしまわないようにZ座標を調整
  28.   ・ゲーム変数を使って視界制限サイズを補正する機能を追加
  29.   
  30. 2012.01.20  Ver1.0
  31.   公開

  32. =end

  33. #==============================================================================
  34. # □ 設定項目
  35. #==============================================================================
  36. module TMBLSIGHT
  37.   # 何番のマップをどれだけ視界制限するか
  38.   # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  39.   SIGHT = {}
  40.   SIGHT[12] = 100    #墓地
  41.   
  42.   VN_SIGHT = 19    # 視界のサイズ補正に利用するゲーム変数番号
  43. end

  44. #==============================================================================
  45. # □ RPG::BaseItem
  46. #==============================================================================
  47. class RPG::BaseItem
  48.   #--------------------------------------------------------------------------
  49.   # ○ 視界制限の補正値
  50.   #--------------------------------------------------------------------------
  51.   def sight_power
  52.     unless @sight_power
  53.       @sight_power = /<視界補正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
  54.     end
  55.     @sight_power
  56.   end
  57. end

  58. #==============================================================================
  59. # ■ Game_Actor
  60. #==============================================================================
  61. class Game_Actor
  62.   #--------------------------------------------------------------------------
  63.   # ○ 視界制限の補正値
  64.   #--------------------------------------------------------------------------
  65.   def sight_power
  66.     result = 0
  67.     feature_objects.each {|object| result += object.sight_power}
  68.     result
  69.   end
  70. end

  71. #==============================================================================
  72. # □ Sprite_SightShadow
  73. #==============================================================================
  74. class Sprite_SightShadow < Sprite
  75.   #--------------------------------------------------------------------------
  76.   # ● オブジェクト初期化
  77.   #--------------------------------------------------------------------------
  78.   def initialize(viewport = nil)
  79.     super(viewport)
  80.     self.z = 99
  81.     self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  82.     @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 解放
  86.   #--------------------------------------------------------------------------
  87.   def dispose
  88.     self.bitmap.dispose
  89.     @bitmap_shadow.dispose
  90.     super
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● フレーム更新
  94.   #--------------------------------------------------------------------------
  95.   def update
  96.     super
  97.     if TMBLSIGHT::SIGHT[$game_map.map_id]
  98.       self.visible = true
  99.       self.bitmap.clear
  100.       w = TMBLSIGHT::SIGHT[$game_map.map_id]
  101.       $game_party.battle_members.each{|actor| w = [w + actor.sight_power, 48].max}
  102.       w = [w + $game_variables[TMBLSIGHT::VN_SIGHT], 48].max
  103.       x = $game_player.screen_x - w / 2
  104.       y = $game_player.screen_y - w / 2 - 16
  105.       rect = Rect.new(x, y, w, w)
  106.       self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
  107.       color = Color.new(0, 0, 0)
  108.       self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
  109.       self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w,
  110.         color)
  111.       self.bitmap.fill_rect(0, y, x, w, color)
  112.       self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
  113.     else
  114.       self.visible = false
  115.     end
  116.   end
  117. end

  118. #==============================================================================
  119. # ■ Spriteset_Map
  120. #==============================================================================
  121. class Spriteset_Map
  122.   #--------------------------------------------------------------------------
  123.   # ● オブジェクト初期化
  124.   #--------------------------------------------------------------------------
  125.   alias tmblsight_spriteset_map_initialize initialize
  126.   def initialize
  127.     tmblsight_spriteset_map_initialize
  128.     create_sight_shadow
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ○ 視界制限スプライトの作成
  132.   #--------------------------------------------------------------------------
  133.   def create_sight_shadow
  134.     @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
  135.     update_sight_shadow
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 解放
  139.   #--------------------------------------------------------------------------
  140.   alias tmblsight_spriteset_map_dispose dispose
  141.   def dispose
  142.     tmblsight_spriteset_map_dispose
  143.     dispose_sight_shadow
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ○ 視界制限スプライトの解放
  147.   #--------------------------------------------------------------------------
  148.   def dispose_sight_shadow
  149.     @sight_shadow_sprite.dispose
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● フレーム更新
  153.   #--------------------------------------------------------------------------
  154.   alias tmblsight_spriteset_map_update update
  155.   def update
  156.     update_sight_shadow
  157.     tmblsight_spriteset_map_update
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ○ 視界制限スプライトの更新
  161.   #--------------------------------------------------------------------------
  162.   def update_sight_shadow
  163.     @sight_shadow_sprite.update if @sight_shadow_sprite
  164.   end
  165. end
复制代码

评分

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

查看全部评分

莺莺飞蛾夜灯寻,小路迷途飞满庭;
追爱明光夜夜怜,不觉天明为谁晴。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-9 12:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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