| 
				
				
累计送礼:0 个
 累计收礼:0 个
 TA的每日心情|  | 开心 2025-10-18 22:41
 | 
|---|
 签到天数: 165 天 连续签到: 1 天 [LV.7]常住居民III 
 管理员   
 
    
        VIP6  
        卡币14601  
        OK点16  
    推广点0  
    同能卷0  
	积分17721 
 
  | 
 
| 能不能围着某物品区域性增加范围!   就是在角落摆个灯 点亮以后就那个事件范围增大光亮不在黑暗  人物依旧是 但是事件那能不能 应该怎么做?   [Ruby] 纯文本查看 复制代码 =begin
=========================================================================
  ★ require Taroxd基础设置
     需要将 sight_shadow.png 放入 Graphics/system 文件夹中才会生效
------------------------------------------------------------------------------
    使用方法:在地图备注<sight x>,则该地图限制视野。x 为该地图的可见范围
    在角色、职业、装备、状态上备注<sight x>,则可以设置 x 的视野补正
    备注位置对应的获取视野补正的条件分别是:
    角色:该角色在队伍中
    职业:队伍中有该职业的角色。可累加
    技能:队伍中有角色习得了该技能。无视生死,可累加
    装备:队伍中有角色装备了该装备。可累加
    状态:队伍中有角色获得了该状态。可累加
=========================================================================
=end
RPG::Map.note_i :sight, false
RPG::BaseItem.note_i :sight
class Game_Map
  #--------------------------------------------------------------------------
  # ● 视野限制值
  #--------------------------------------------------------------------------
  def shadow_sight
    @map.sight
  end
end
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 视野补正值
  #--------------------------------------------------------------------------
  def sight_power
    note_objects.sum(&:sight)
  end
end
class Sprite_SightShadow < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize(viewport = nil)
    super(viewport)
    self.z = 199
    self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  end
  #--------------------------------------------------------------------------
  # ● 阴影的位图
  #--------------------------------------------------------------------------
  def shadow_bitmap
    Cache.system('sight_shadow')
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    bitmap.dispose
    shadow_bitmap.dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = $game_map.shadow_sight
    return unless visible
    w = $game_party.sum($game_map.shadow_sight, &:sight_power)
    x = $game_player.screen_x - w / 2
    y = $game_player.screen_y - w / 2 - 16
    return if @last_position == [w, x, y]
    @last_position = w, x, y
    width, height = Graphics.width, Graphics.height
    rect = Rect.new(x, y, w, w)
    black = Color.new(0, 0, 0)
    bitmap.clear
    bitmap.stretch_blt(rect, shadow_bitmap, shadow_bitmap.rect)
    bitmap.fill_rect(0, 0, width, y, black)
    bitmap.fill_rect(0, y + w, width, height - y - w, black)
    bitmap.fill_rect(0, y, x, w, black)
    bitmap.fill_rect(x + w, y, width - x - w, w, black)
  end
end
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def_after(:initialize) { create_sight_shadow }
  #--------------------------------------------------------------------------
  # ● 创建阴影
  #--------------------------------------------------------------------------
  def create_sight_shadow
    @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
    update_sight_shadow
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def_before(:dispose) { @sight_shadow_sprite.dispose }
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  def_before(:update) { update_sight_shadow }
  #--------------------------------------------------------------------------
  # ● 更新视野限制
  #--------------------------------------------------------------------------
  def update_sight_shadow
    @sight_shadow_sprite.update if @sight_shadow_sprite
  end
end
            本帖来自P1论坛作者V5洛,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=405974  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
 | 
 |