Project1

标题: 求助,如何通过替换图片来实现图片制血条的逐渐变色功能 [打印本页]

作者: 桐人    时间: 2014-7-9 20:44
标题: 求助,如何通过替换图片来实现图片制血条的逐渐变色功能
本帖最后由 桐人 于 2014-7-11 19:22 编辑

就是想制作一个随着血量的减少血条的颜色改变的一个功能。由于采用的是脚本制的图片血条,所以在网上查了半天也没有相关信息,我试了一下写条件分歧,不过没有成功。三种颜色的图片都放进去了,希望大家能够帮帮我,告诉我怎么才能通过脚本实现图片的替换。


哦对了,还请问一下,这个血条能实现渐降效果吗?难吗?
Project4.rar (211.53 KB, 下载次数: 25)
作者: 克莉丝    时间: 2014-7-10 10:49
本帖最后由 RyanBern 于 2014-7-10 12:07 编辑

将原来绿色的血条色相逆时针转过90°就能变成红色
用下面这个计算式达到目的
90 *Math.sqrt( actor.hp.to_f / actor.maxhp) - 90

因为如果是用一次函数的话血条变黄太快,换了根式

增加脚本见09行
  1. def HP(actor,x,y,w=74,width=144)
  2.   # HP条
  3.   #HP最大值
  4.   @bitmap1 =Bitmap.new("Graphics/Pictures/HP")
  5.   [email protected] *actor.hp/actor.maxhp
  6.   @src_rect1 = Rect.new( 0, 0, w1, @bitmap1.height)   
  7.   self.contents.blt(x+119,y+11,@bitmap1,@src_rect1)
  8.   self.contents.hue_change 90 *Math.sqrt( actor.hp.to_f / actor.maxhp) - 90
  9.   @bitmap3 =Bitmap.new("Graphics/Pictures/MHP")
  10.   [email protected]   
  11.   @src_rect3 = Rect.new( 0, 0, w3, @bitmap3.height)
  12.   self.contents.blt(x+38,y-22,@bitmap3,@src_rect3)
  13.   #HP  
  14.   hp_x = x
  15.   flag = false
  16.   self.contents.font.color = actor.hp == 0 ? knockout_color :
  17.        actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  18.   # 描绘 MaxHP
  19.   if flag
  20.     self.contents.font.color =normal_color
  21.     self.contents.draw_text(hp_x + 20, y+40, 12, 20, "/", 1)
  22.     self.contents.draw_number(hp_x + 35, y, actor.maxhp.to_s)     
  23.   end
  24. end

  25. #SP条
  26. def SP(actor,x,y,w=74,width=144)
  27.   #SP最大值
  28.   @bitmap4 =Bitmap.new("Graphics/Pictures/MSP")  
  29.   [email protected]
  30.   @src_rect4 = Rect.new( 0, 0, w4, @bitmap4.height)
  31.   self.contents.blt(x+68,y,@bitmap4,@src_rect4)
  32.   #sp
  33.   @bitmap2 =Bitmap.new("Graphics/Pictures/SP")
  34.   [email protected] *actor.sp/actor.maxsp
  35.   @src_rect2 = Rect.new( 0, 0, w2, @bitmap2.height)
  36.   self.contents.blt(x+68,y,@bitmap2,@src_rect2)
  37.   sp_x = x
  38.   flag = false
  39.   # 描绘 SP
  40.   self.contents.font.color = actor.sp == 0 ? knockout_color :
  41.        actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  42.   # 描绘 MaxSP
  43.   if flag
  44.     self.contents.font.color = normal_color
  45.     self.contents.draw_text(sp_x + 20, y+41, 13, 20, "/", 1)
  46.     #把括号后的2去掉,中间的两个数字也去掉,
  47.     self.contents.draw_number(sp_x + 35, y,  actor.maxsp.to_s)
  48.     #把draw_text改为draw_number就行了!!
  49.   end
  50. end
复制代码

作者: 桐人    时间: 2014-7-10 16:12
谢谢您了,解决了!




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