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

Project1

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

[已经解决] 我想问下 有关 位图 制作 血槽

[复制链接]

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
跳转到指定楼层
1
发表于 2015-7-12 15:56:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  def update
    self.bitmap.clear
   
    color1 = color.set(255, 255, 255)
    color2 = color.set(255, 155, 125)

   
   
    rect = Rect.new(70, 370, 400, 30)
   
    self.bitmap.gradient_fill_rect(rect, color1, color2)
   
  end  

这个 方法 gradient_fill_rect 可以制作血槽吗

如何 算出 自己的宽度 和 移动的宽度

我也不知道 如何表达  无语了
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2015-7-12 19:02:50 | 只看该作者
可以参考默认脚本的血槽绘制方法
Window_Base#draw_gauge
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
帖子
127

开拓者

3
发表于 2015-7-13 14:33:54 | 只看该作者
并不是这样的,gradient_fill_rect 是一个描绘渐变颜色的方法,以下这段来自于RMVA的F1帮助中:
gradient_fill_rect(rect, color1, color2[, vertical])
将位图区域 (x, y, width, height) 或矩形(Rect)填满从颜色 color1(Color)至 color2(Color)的渐变色彩。

将 vertical 设为 true 生成纵向的渐变色彩,默认为横向渐变。


如果要描绘血槽的话,血槽的总宽度是任意的,你可以按照自己的需要来设置,而移动的宽度……你是想要表达当前HP的宽度吧?可以通过计算角色当前HP和角色总HP的百分比乘以血槽的总宽度来获得。
实际上,描绘血槽在 Window_Base 类已经有一个不错的方法了:
  1.   def draw_actor_hp(actor, x, y, width = 124)
  2.     draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
  3.     change_color(system_color)
  4.     draw_text(x, y, 30, line_height, Vocab::hp_a)
  5.     draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
  6.       hp_color(actor), normal_color)
  7.   end
复制代码
仿照这个方法,我们完全可以为 bitmap 类写一个类似的方法来描绘血槽:
  1. class Bitmap
  2.   def qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)   
  3.     fill_w = (rect.width * actor.hp_rate).to_i
  4.     self.fill_rect(rect, color3)
  5.     target_rect = rect.clone
  6.     target_rect.width = fill_w
  7.     self.gradient_fill_rect(target_rect, color1, color2)
  8.   end
  9. end
复制代码
于是你原本的脚本就可以修改成这样:
  1.   def update
  2.     self.bitmap.clear
  3.     actor = $game_actors[1]             # 需要描绘HP的角色
  4.     rect = Rect.new(70, 370, 400, 30)   # 描绘血槽的位置
  5.     color1 = color.set(255, 255, 255)   # 血槽左侧的颜色
  6.     color2 = color.set(255, 155, 125)   # 血槽右侧的颜色   
  7.     color3 = Color.new(255, 255, 255)   # 血槽背景的颜色   
  8.     self.bitmap.qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)
  9.   end
复制代码
另外,一般来说,血槽并不需要实时刷新,个人建议你可以将脚本改成这样提升效率(以下代码并未测试):
  1.   def update
  2.     actor = $game_actors[1]             # 需要描绘HP的角色
  3.     if @hp != actor.hp
  4.       @hp = actor.hp
  5.       refresh(actor)
  6.     end
  7.   end
  8.   def refresh(actor)
  9.     self.bitmap.clear
  10.     rect = Rect.new(70, 370, 400, 30)   # 描绘血槽的位置
  11.     color1 = color.set(255, 255, 255)   # 血槽左侧的颜色
  12.     color2 = color.set(255, 155, 125)   # 血槽右侧的颜色   
  13.     color3 = Color.new(255, 255, 255)   # 血槽背景的颜色   
  14.     self.bitmap.qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)
  15.   end
复制代码

评分

参与人数 2星屑 +160 梦石 +1 收起 理由
taroxd + 1 认可答案
喵呜喵5 + 160 四季萌萌哒

查看全部评分

泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
4
 楼主| 发表于 2015-7-14 18:57:34 | 只看该作者
泉塚四季 发表于 2015-7-13 14:33
并不是这样的,gradient_fill_rect 是一个描绘渐变颜色的方法,以下这段来自于RMVA的F1帮助中:

谢谢 写的很详细 只是我不是用在血槽上 只是做一个槽
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
帖子
127

开拓者

5
发表于 2015-7-15 20:33:57 | 只看该作者
z2z4 发表于 2015-7-14 19:57
谢谢 写的很详细 只是我不是用在血槽上 只是做一个槽

思路也是一样的哦。
  1. class Bitmap
  2.   def qz4j150715_draw_guage(rate, rect, color1, color2, color3)   
  3.     fill_w = (rect.width * rate).to_i
  4.     self.fill_rect(rect, color3)
  5.     target_rect = rect.clone
  6.     target_rect.width = fill_w
  7.     self.gradient_fill_rect(target_rect, color1, color2)
  8.   end
  9. end
复制代码
然后,调用的时候这么调用:
  1.   def update
  2.     self.bitmap.clear
  3.     rate = 0.92                         # 数值槽需要描绘的数值(92%)
  4.     rect = Rect.new(70, 370, 400, 30)   # 描绘的位置
  5.     color1 = color.set(255, 255, 255)   # 槽左侧的颜色
  6.     color2 = color.set(255, 155, 125)   # 槽右侧的颜色
  7.     color3 = Color.new(255, 255, 255)   # 槽背景的颜色
  8.     self.bitmap.qz4j150715_draw_guage(rate, rect, color1, color2, color3)
  9.   end
复制代码
泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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