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

Project1

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

[已经解决] 战斗显示敌人血量和敌人技能动画冲突问题求解决

[复制链接]

Lv2.观梦者

梦石
0
星屑
521
在线时间
350 小时
注册时间
2015-10-19
帖子
87
跳转到指定楼层
1
发表于 2015-12-20 13:51:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 约约v看看 于 2015-12-20 13:54 编辑

#==============================================================================
# *删除MP显示相关
#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用: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
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
    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
        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.show #怪物死后再被复活
        end #if battler.hp == 0
      end
    end #if @battler == nil
  end

end







#=====================================================================

=========
# ■ Game_Actor
#=====================================================================

=========
class Game_Actor < Game_Battler
  

#---------------------------------------------------------------------

-----
  # ● 是否使用精灵
  

#---------------------------------------------------------------------

-----
  def use_sprite?
    true
  end
  

#---------------------------------------------------------------------

-----
  # ● 战斗画面 X 坐标
  

#---------------------------------------------------------------------

-----
  def screen_x
    Graphics.width / 2
  end
  

#---------------------------------------------------------------------

-----
  # ● 战斗画面 Y 坐标
  

#---------------------------------------------------------------------

-----
  def screen_y
    Graphics.height
  end
  

#---------------------------------------------------------------------

-----
  # ● 战斗画面 Z 坐标
  

#---------------------------------------------------------------------

-----
  def screen_z
    return 100
  end
end
#=====================================================================

=========
# ■ Sprite_Battler
#=====================================================================

=========
class Sprite_Battler < Sprite_Base
  

#---------------------------------------------------------------------

-----
  # ● 设置动画的原点
  

#---------------------------------------------------------------------

-----
  def set_animation_origin
    if @animation.position == 3
    # 数据库中设定的动画基础位置是 [画面] 时的坐标变更
      @ani_ox = viewport.rect.width / 2
      yy = viewport.rect.height / 5
      @ani_oy = @battler.actor? ? (yy * 4) : (yy * 2.5)
    else
      @ani_ox = x - ox + width / 2
      @ani_oy = y - oy + height / 2
      if @animation.position == 0
        @ani_oy -= height / 2
      elsif @animation.position == 2
        @ani_oy += height / 2
      end
    end
  end
end

捕获.PNG (4.85 KB, 下载次数: 30)

帖子第一个脚本会这样

帖子第一个脚本会这样

Lv2.观梦者

梦石
0
星屑
521
在线时间
350 小时
注册时间
2015-10-19
帖子
87
2
 楼主| 发表于 2015-12-21 01:27:23 | 只看该作者
终于想进办法解决了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
59 小时
注册时间
2016-2-13
帖子
86
3
发表于 2016-2-20 10:03:09 | 只看该作者
约约v看看 发表于 2015-12-21 01:27
终于想进办法解决了

我也遇到了同样的问题,能问一下,你是怎么解决的吗.谢谢(。◕∀◕。)

点评

同样,但是我发现更改怪物位置会有影响.所以,我觉得应该是地图背景遮挡了HP显示  发表于 2016-2-25 20:12
芙蕾雅的我用了之后发现显示血条的几率是一半一半,找不到原因,所以弃了  发表于 2016-2-21 20:39
哦....我现在是用'F08 - 战斗敌人显示血条 - By芙蕾娅'这个..单'F08'不美观,只能说可以用.... 可是那些美观的吧,又都和我的脚本冲突.....哎,头疼...  发表于 2016-2-21 14:50
我换了一个血槽脚本,现在用着Taroxd的  发表于 2016-2-21 12:27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 07:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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