查看: 2884|回复: 3

[已经解决] 如何在敌人头上显示受到的状态呢

[复制链接]
梦石
0
星屑
345
在线时间
57 小时
注册时间
2013-1-11
回帖
23
发表于 2020-9-9 17:39:10 | 显示全部楼层 |阅读模式

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

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

×
各位大佬好,我又来啦~
在大佬们的帮助下,上回的立绘上显示动画已经搞定了(但是不知道怎么把帖子改成“已经解决” )

现在我想在战斗时敌人的左上显示敌人受到的状态
自己参照Sprite_Battler乱写了一通脚本,但是运行的时候告诉我@enemy_icon.each {|sprite| sprite.update }里面的Game_Enemy元素没有update的方法
但是我看官方脚本Spriteset_Battle里update_enemies方法中的@enemy_sprites.each {|sprite| sprite.update }却可以使用,是我哪里写错了吗


附上脚本:
[pre lang="ruby"]
class Spriteset_Battle
  #---------------------------------------------------------------------------
  # * 初始化
  #---------------------------------------------------------------------------
  alias icon_initialize initialize
  def initialize
    icon_initialize
    creat_enemy_icon
    icon_update
  end
  #---------------------------------------------------------------------------
  # * 创建精灵实例
  #---------------------------------------------------------------------------  
  def creat_enemy_icon
    @enemy_icon = $game_troop.members.select {|item| item.have_state?}
      @enemy_icon.reverse.collect do |icon|
          Sprite_EnemyState.new(@viewport1, icon)
     end
  end
  #--------------------------------------------------------------------------
  # * 释放
  #--------------------------------------------------------------------------
  alias icon_dispose dispose
  def dispose
    icon_dispose
    dispose_enemy_icon
  end
  #---------------------------------------------------------------------------
  # * 更新
  #---------------------------------------------------------------------------
  alias icon_update update
  def update
    icon_update
    update_enemy_icon
  end
  #---------------------------------------------------------------------------
  # * 释放icon
  #---------------------------------------------------------------------------
  def dispose_enemy_icon
    @enemy_icon.each {|sprite| sprite.dispose }
  end
  #---------------------------------------------------------------------------
  # * 更新icon
  #---------------------------------------------------------------------------
  def update_enemy_icon
    @enemy_icon.each {|sprite| sprite.update } if @enemy_icon
  end
end

class Sprite_EnemyState < Sprite_Battler  
  #---------------------------------------------------------------------------
  # * 初始化
  #---------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport, battler)
  end
  #---------------------------------------------------------------------------
  # * 释放
  #---------------------------------------------------------------------------
  def dispose
    bitmap.dispose if bitmap
    super
  end
  #---------------------------------------------------------------------------
  # * 更新
  #---------------------------------------------------------------------------  
    def update
      super
      if @use_sprite
         update_icon_bitmap
      else
      self.bitmap = nil
      @effect_type = nil
      end
    end
  #---------------------------------------------------------------------------
  # * 更新画面Icon
  #---------------------------------------------------------------------------
  def update_icon_bitmap
    icons = (@battler.state_icons + @battler.buff_icons)[0, width / 24]
    icons.each_with_index {|n, i| draw_enemy_icon(n, @battler.x - 20 * i, @battler.y - 20) }
  end
  # --------------------------------------------------------------------------
  #  * 绘制敌人icon
  # --------------------------------------------------------------------------
  def draw_enemy_icon(icon_index, x, y,enabled = true)
    bw = Graphics.width + 48
    bh = Font.default_size*3
    bitmap = Bitmap.new(bw,bh)
    icbitmap = Cache.system("Iconset")
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    new_bitmap = bitmap.blt(x, y, icbitmap, rect, enabled ? 255 : translucent_alpha)
    if bitmap != new_bitmap
      self.bitmap = new_bitmap
      init_visibility
    end
  end
end

class Game_Enemy
  
  def have_state?
    return true if @state != []
  end

end
[/pre]
梦石
0
星屑
3037
在线时间
388 小时
注册时间
2015-1-29
回帖
12
发表于 2020-9-9 20:44:57 | 显示全部楼层
显示状态
搜索就有现成的
回复

使用道具 举报

梦石
0
星屑
345
在线时间
57 小时
注册时间
2013-1-11
回帖
23
 楼主| 发表于 2020-9-10 08:28:39 | 显示全部楼层
SmallDrop 发表于 2020-9-9 20:44
显示状态
搜索就有现成的

感谢指路,我去看看
主要还是想搞清楚哪里写的有问题
回复

使用道具 举报

梦石
0
星屑
345
在线时间
57 小时
注册时间
2013-1-11
回帖
23
 楼主| 发表于 2020-9-10 10:38:36 | 显示全部楼层
SmallDrop 发表于 2020-9-9 20:44
显示状态
搜索就有现成的

搞定了,感谢大佬
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部