Project1

标题: 敌人血条显示问题 [打印本页]

作者: 545190922    时间: 2016-7-17 21:48
标题: 敌人血条显示问题
脚本是下面这个,血条显示级别高于图片显示级别了怎么办?




像这样 显示出来的图片会被血条挡住  这个怎么办?




#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用:RMVX Ace
# 作者:殇殃 2012.3.10
# 使用方法:复制整个脚本插入到Main之前
# 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
#       可以自行更改坐标修改显示位置、血条的颜色等。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 描绘敌人HP
  #--------------------------------------------------------------------------
  def draw_enemy_hp(enemy, x, y, width = 80)
    draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
    self.contents.font.color = hp_color(enemy)
    self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
    #一个数字占16像素
  end
  #--------------------------------------------------------------------------
  # ● 绘制敌人MP
  #--------------------------------------------------------------------------
  def draw_enemy_mp(enemy, x, y, width = 80)
    draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a)
    self.contents.font.color = mp_color(enemy)
    self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
  end
end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视、活动块状态自动变化。
#==============================================================================

class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     viewport : 视区
  #     battler  : 战斗者 (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    @effect_type = nil      
    @effect_duration = 0   
    if @battler.is_a?(Game_Enemy)
      width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
      height = 24 + 24*2 #边距12*2+line_height*2
      x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
      y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
      @enemy_hpmp_window = Window_Base.new(x, y, width, height)
      @enemy_hpmp_window.opacity = 0
      @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
      @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
      @old_hp = -1
      @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
      @old_mp = -1
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
      @enemy_hpmp_window.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    if @battler == nil
      self.bitmap = nil
    else
      @use_sprite = @battler.use_sprite?
      if @use_sprite
        update_bitmap
        update_origin
        update_position
      end
      setup_new_effect
      setup_new_animation
      update_effect
      if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
        if @battler.hp == 0
          @enemy_hpmp_window.hide
        else
          @enemy_hpmp_window.contents.clear
          @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
          @old_hp = @battler.hp
          @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
          @old_mp = @battler.mp
          @enemy_hpmp_window.show #怪物死后再被复活
        end #if battler.hp == 0
      end
    end #if @battler == nil
  end

end
作者: zx903193387    时间: 2016-7-18 19:12
{:2_258:}把图片的深度调高啊
作者: 545190922    时间: 2016-7-18 22:15
zx903193387 发表于 2016-7-18 19:12
把图片的深度调高啊

哪一行定义有定义深度 没搜到有定义啊
作者: zx903193387    时间: 2016-7-18 22:26
545190922 发表于 2016-7-18 22:15
哪一行定义有定义深度 没搜到有定义啊

你设置图片的时候不是有一个给图片的编号么,那个就是深度,数字越大你的图片就越前面
作者: 545190922    时间: 2016-7-18 22:31
zx903193387 发表于 2016-7-18 22:26
你设置图片的时候不是有一个给图片的编号么,那个就是深度,数字越大你的图片就越前面 ...

好吧 注意到了  我以为那就一标签的作用
作者: 545190922    时间: 2016-7-21 22:11
没人能解决么
作者: 545190922    时间: 2016-8-4 17:05
求解决啊
作者: 545190922    时间: 2016-9-16 17:21
求解决啊
作者: sq333333    时间: 2016-9-16 18:07
换脚本,有一个敌人血条脚本,在受到攻击时才会显示血条。 可以解决这个冲突。




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