Project1

标题: 关于物品界面人物动态血条设置 [打印本页]

作者: devil033    时间: 2017-10-3 11:03
标题: 关于物品界面人物动态血条设置
本帖最后由 devil033 于 2017-10-3 11:06 编辑

如题,我想把物品使用界面中的角色血条,改成动态血条



但我只会写生成单个角色的动态血条
像上图这种,存在多个角色,还能上下拉动,并且还要与index一一对应的,不会写
以下是生成单个角色动态血条的方法
  def create_hp_meter
      @par_meter_image = Bitmap.new("Graphics/System/Par_Meter")
      @par_meter_cw = @par_meter_image.width / 3
      @par_meter_ch = @par_meter_image.height / 2
      @par_meter_flow = 0
      @par_meter_flow_max = @par_meter_image.width - @par_meter_cw      
      @hp_meter = Sprite.new
      @hp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
      @hp_meter.z = 500
      @hp_meter.x = 287
      @hp_meter.y = 200
      update_flow_hp
  end


  def update_flow_hp
      @hp_meter.bitmap.clear
      par_width = @par_meter_cw * @actor.hp / @actor.mhp rescue nil
      par_width = 0 if par_width == nil
      m_scr = Rect.new(@par_meter_flow,@par_meter_ch, par_width, @par_meter_ch)
      @hp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
      @par_meter_flow += 3
      @par_meter_flow = 0 if @par_meter_flow > @par_meter_flow_max
  end  


如果要如上要求实现多个角色动态血条功能,要怎么写?求大神指导,帮忙,谢谢。
顺便附上个新工程,血条图片已经放在Graphics/System/下
而这两句生成血条的方法放在Window_MenuActor类里面了

Project2.rar (1.42 MB, 下载次数: 122)





作者: 铅笔描绘的思念    时间: 2017-10-3 18:47
能自己写某个角色的怎么会写不了通用的 其实就是多了几个参数罢了不过我确实没看懂你这写的是实现了什么功能也懒得下附件看hhh

其实想多个角色都能用就比如这样写
def create_hp_meter(actor, x, y)#do something
#balabala
#在用到hp值的时候用actor.hp
end


作者: devil033    时间: 2017-10-5 18:47
这个问题难度这么大吗,求个大神指导一波,感谢
作者: 流浪杰哥    时间: 2019-6-21 17:25
楼主还在吗,我也遇到跟你一样的问题,也只生成单个的动态,楼主解决了吗?可以说下么
作者: devil033    时间: 2019-6-23 20:27
参考MOG,全部显示在一页,不要下拉菜单
作者: 流浪杰哥    时间: 2019-6-23 22:25
本帖最后由 流浪杰哥 于 2019-6-23 22:27 编辑
流浪杰哥 发表于 2019-6-21 17:25
楼主还在吗,我也遇到跟你一样的问题,也只生成单个的动态,楼主解决了吗?可以说下么 ...


我是从MOG的BOSS血条取出的一段动态血条的描绘方法,我把它放在Window_MenuStatus里面使用,只不过只能生成一个血条,暂时还没有解决这个问题…………方便的话楼主可以告诉我怎么修改吗?顺便一提,啥下拉菜单是什么呢……

这是我暂时使用的方式,因为图方便我直接放到Window_Base里面去了。
脚本如下:
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Base
  4. #------------------------------------------------------------------------------
  5. #  游戏中所有窗口的父类
  6. #==============================================================================
  7.  
  8. class Window_Base < Window
  9.    def dispose
  10.     contents.dispose unless disposed?
  11.     super
  12.     dispose_meter#释放
  13.   end
  14.   def update
  15.     super
  16.     update_hp_meter#更新
  17.     update_tone
  18.     update_open if @opening
  19.     update_close if @closing
  20.   end
  21.  
  22.  
  23.   #绘制
  24.   def draw_actor_hp_meter(actor,x, y)
  25.       @meter_image = Cache.system("HP_Meter")
  26.       @meter_cw = @meter_image.width / 3
  27.       @meter_ch = @meter_image.height
  28.       @meter = Sprite.new
  29.       @meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  30.       @meter.z = 101
  31.       @meter.x = x
  32.       @meter.y = y
  33.       @hp_flow = 0
  34.       @hp_flow_max = @meter_cw * 2  
  35.       @np = actor.hp
  36.       @nnp = actor.mhp
  37.   end
  38.  
  39.  
  40.     def dispose_meter
  41.       return if @meter == nil
  42.       @meter.bitmap.dispose
  43.       @meter.dispose
  44.       @meter = nil
  45.     end
  46.  
  47.  
  48.     def update_hp_meter
  49.       return if @meter_image == nil
  50.       @meter.bitmap.clear
  51.       hp_width = @meter_cw * @np / @nnp
  52.       hp_src_rect = Rect.new(@hp_flow, 0,hp_width, @meter_ch)
  53.       @meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
  54.       @hp_flow += 1
  55.       @hp_flow = 0 if @hp_flow >= @hp_flow_max
  56.     end
  57. end

作者: 流浪杰哥    时间: 2019-6-24 11:10
流浪杰哥 发表于 2019-6-23 22:25
我是从MOG的BOSS血条取出的一段动态血条的描绘方法,我把它放在Window_MenuStatus里面使用,只不过只能生 ...

如果可以的话,可以提供一个简单的示例么,我实在摸不着头脑




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