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

Project1

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

[已经解决] 角色血条怎么美化

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
11 小时
注册时间
2011-7-9
帖子
30
跳转到指定楼层
1
发表于 2011-7-11 15:02:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
RT,感觉人物角色的血槽只是个矩形,好难看……呃,怎么用图片代替?或者美化它们啊?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
273 小时
注册时间
2011-5-20
帖子
295
2
发表于 2011-7-11 21:06:29 | 只看该作者
这个怎么样:



放在System里,色彩可以自己PS
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 汎用ゲージ描画 - KGC_GenericGauge ◆ VX ◆
  3. #_/    ◇ Last update : 2009/09/26 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  汎用的なゲージ描画機能を提供します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize BEGIN ★
  9. #==============================================================================

  10. module KGC
  11. module GenericGauge
  12.   # ◆ ゲージ画像
  13.   #  "Graphics/System" から読み込む。
  14.   HP_IMAGE  = "GaugeHP"   # HP
  15.   MP_IMAGE  = "GaugeMP"   # MP
  16.   EXP_IMAGE = "GaugeEXP"  # EXP

  17.   # ◆ ゲージ位置補正 [x, y]
  18.   HP_OFFSET  = [-23, -2]  # HP
  19.   MP_OFFSET  = [-23, -2]  # MP
  20.   EXP_OFFSET = [-23, -2]  # EXP

  21.   # ◆ ゲージ長補正
  22.   HP_LENGTH  = -4  # HP
  23.   MP_LENGTH  = -4  # MP
  24.   EXP_LENGTH = -4  # EXP

  25.   # ◆ ゲージの傾き角度
  26.   #  -89 ~ 89 で指定。
  27.   HP_SLOPE  = 30  # HP
  28.   MP_SLOPE  = 30  # MP
  29.   EXP_SLOPE = 30  # EXP
  30. end
  31. end

  32. #==============================================================================
  33. # ☆ カスタマイズ項目 終了 - Customize END ☆
  34. #==============================================================================

  35. $imported = {} if $imported == nil
  36. $imported["GenericGauge"] = true

  37. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  38. #==============================================================================
  39. # ■ Bitmap
  40. #==============================================================================

  41. unless $imported["BitmapExtension"]
  42. class Bitmap
  43.   #--------------------------------------------------------------------------
  44.   # ○ 平行四辺形転送
  45.   #--------------------------------------------------------------------------
  46.   def skew_blt(x, y, src_bitmap, src_rect, slope, opacity = 255)
  47.     slope = [[slope, -90].max, 90].min
  48.     sh    = src_rect.height
  49.     off  = sh / Math.tan(Math::PI * (90 - slope.abs) / 180.0)
  50.     if slope >= 0
  51.       dx   = x + off.round
  52.       diff = -off / sh
  53.     else
  54.       dx   = x
  55.       diff = off / sh
  56.     end
  57.     rect = Rect.new(src_rect.x, src_rect.y, src_rect.width, 1)

  58.     sh.times { |i|
  59.       blt(dx + (diff * i).round, y + i, src_bitmap, rect, opacity)
  60.       rect.y += 1
  61.     }
  62.   end
  63. end
  64. end

  65. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  66. #==============================================================================
  67. # ■ Game_Actor
  68. #==============================================================================

  69. class Game_Actor < Game_Battler
  70.   #--------------------------------------------------------------------------
  71.   # ○ 次のレベルの経験値取得
  72.   #--------------------------------------------------------------------------
  73.   def next_exp
  74.     return @exp_list[@level+1]
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ○ 次のレベルの差分経験値取得
  78.   #--------------------------------------------------------------------------
  79.   def next_diff_exp
  80.     return (@exp_list[@level+1] - @exp_list[@level])
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ○ 次のレベルまでの経験値取得
  84.   #--------------------------------------------------------------------------
  85.   def next_rest_exp
  86.     return (@exp_list[@level+1] - @exp)
  87.   end
  88. end

  89. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  90. #==============================================================================
  91. # ■ Window_Base
  92. #==============================================================================

  93. class Window_Base < Window
  94.   #--------------------------------------------------------------------------
  95.   # ○ 定数
  96.   #--------------------------------------------------------------------------
  97.   # ゲージ転送元座標 [x, y]
  98.   GAUGE_SRC_POS = {
  99.     :normal   => [ 0, 24],
  100.     :decrease => [ 0, 48],
  101.     :increase => [72, 48],
  102.   }
  103.   #--------------------------------------------------------------------------
  104.   # ○ クラス変数
  105.   #--------------------------------------------------------------------------
  106.   @@__gauge_buf = Bitmap.new(320, 24)
  107.   #--------------------------------------------------------------------------
  108.   # ○ ゲージ描画
  109.   #     file       : ゲージ画像ファイル名
  110.   #     x, y       : 描画先 X, Y 座標
  111.   #     width      : 幅
  112.   #     value      : 現在値
  113.   #     limit      : 上限値
  114.   #     offset     : 座標調整 [x, y]
  115.   #     len_offset : 長さ調整
  116.   #     slope      : 傾き
  117.   #     gauge_type : ゲージタイプ
  118.   #--------------------------------------------------------------------------
  119.   def draw_gauge(file, x, y, width, value, limit, offset, len_offset, slope,
  120.       gauge_type = :normal)
  121.     img    = Cache.system(file)
  122.     x     += offset[0]
  123.     y     += offset[1]
  124.     width += len_offset
  125.     draw_gauge_base(img, x, y, width, slope)
  126.     gw = width * value / limit
  127.     draw_gauge_bar(img, x, y, width, gw, slope, GAUGE_SRC_POS[gauge_type])
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ○ ゲージベース描画
  131.   #     img   : ゲージ画像
  132.   #     x, y  : 描画先 X, Y 座標
  133.   #     width : 幅
  134.   #     slope : 傾き
  135.   #--------------------------------------------------------------------------
  136.   def draw_gauge_base(img, x, y, width, slope)
  137.     rect = Rect.new(0, 0, 24, 24)
  138.     if slope != 0
  139.       self.contents.skew_blt(x, y, img, rect, slope)
  140.       rect.x = 96
  141.       self.contents.skew_blt(x + width + 24, y, img, rect, slope)

  142.       rect.x     = 24
  143.       rect.width = 72
  144.       dest_rect = Rect.new(0, 0, width, 24)
  145.       @@__gauge_buf.clear
  146.       @@__gauge_buf.stretch_blt(dest_rect, img, rect)
  147.       self.contents.skew_blt(x + 24, y, @@__gauge_buf, dest_rect, slope)
  148.     else
  149.       self.contents.blt(x, y, img, rect)
  150.       rect.x = 96
  151.       self.contents.blt(x + width + 24, y, img, rect)
  152.       rect.x     = 24
  153.       rect.width = 72
  154.       dest_rect = Rect.new(x + 24, y, width, 24)
  155.       self.contents.stretch_blt(dest_rect, img, rect)
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ○ ゲージ内部描画
  160.   #     img     : ゲージ画像
  161.   #     x, y    : 描画先 X, Y 座標
  162.   #     width   : 全体幅
  163.   #     gw      : 内部幅
  164.   #     slope   : 傾き
  165.   #     src_pos : 転送元座標 [x, y]
  166.   #     start   : 開始位置
  167.   #--------------------------------------------------------------------------
  168.   def draw_gauge_bar(img, x, y, width, gw, slope, src_pos, start = 0)
  169.     rect = Rect.new(src_pos[0], src_pos[1], 72, 24)
  170.     dest_rect = Rect.new(0, 0, width, 24)
  171.     @@__gauge_buf.clear
  172.     @@__gauge_buf.stretch_blt(dest_rect, img, rect)
  173.     dest_rect.x     = start
  174.     dest_rect.width = gw
  175.     x += start
  176.     if slope != 0
  177.       self.contents.skew_blt(x + 24, y, @@__gauge_buf, dest_rect, slope)
  178.     else
  179.       self.contents.blt(x + 24, y, @@__gauge_buf, dest_rect)
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● HP ゲージの描画
  184.   #     actor : アクター
  185.   #     x, y  : 描画先 X, Y 座標
  186.   #     width : 幅
  187.   #--------------------------------------------------------------------------
  188.   def draw_actor_hp_gauge(actor, x, y, width = 120)
  189.     draw_gauge(KGC::GenericGauge::HP_IMAGE,
  190.       x, y, width, actor.hp, actor.maxhp,
  191.       KGC::GenericGauge::HP_OFFSET,
  192.       KGC::GenericGauge::HP_LENGTH,
  193.       KGC::GenericGauge::HP_SLOPE
  194.     )
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● MP ゲージの描画
  198.   #     actor : アクター
  199.   #     x, y  : 描画先 X, Y 座標
  200.   #     width : 幅
  201.   #--------------------------------------------------------------------------
  202.   def draw_actor_mp_gauge(actor, x, y, width = 120)
  203.     draw_gauge(KGC::GenericGauge::MP_IMAGE,
  204.       x, y, width, actor.mp, [actor.maxmp, 1].max,
  205.       KGC::GenericGauge::MP_OFFSET,
  206.       KGC::GenericGauge::MP_LENGTH,
  207.       KGC::GenericGauge::MP_SLOPE
  208.     )
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ○ Exp の描画
  212.   #     actor : アクター
  213.   #     x, y  : 描画先 X, Y 座標
  214.   #     width : 幅
  215.   #--------------------------------------------------------------------------
  216.   def draw_actor_exp(actor, x, y, width = 180)
  217.     self.contents.font.color = normal_color
  218.     self.contents.draw_text(x, y, width, WLH, actor.exp_s, 2)
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ○ NextExp の描画
  222.   #     actor : アクター
  223.   #     x, y  : 描画先 X, Y 座標
  224.   #     width : 幅
  225.   #--------------------------------------------------------------------------
  226.   def draw_actor_next_exp(actor, x, y, width = 180)
  227.     draw_actor_exp_gauge(actor, x, y, width)

  228.     self.contents.font.color = normal_color
  229.     self.contents.draw_text(x, y, width, WLH, actor.next_rest_exp_s, 2)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ○ Exp ゲージの描画
  233.   #     actor : アクター
  234.   #     x, y  : 描画先 X, Y 座標
  235.   #     width : 幅
  236.   #--------------------------------------------------------------------------
  237.   def draw_actor_exp_gauge(actor, x, y, width = 180)
  238.     diff = [actor.next_diff_exp, 1].max
  239.     rest = [actor.next_rest_exp, 1].max
  240.     draw_gauge(KGC::GenericGauge::EXP_IMAGE,
  241.       x, y, width, diff - rest, diff,
  242.       KGC::GenericGauge::EXP_OFFSET,
  243.       KGC::GenericGauge::EXP_LENGTH,
  244.       KGC::GenericGauge::EXP_SLOPE
  245.     )
  246.   end
  247. end

  248. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  249. #==============================================================================
  250. # ■ Window_Status
  251. #==============================================================================

  252. class Window_Status < Window_Base
  253.   #--------------------------------------------------------------------------
  254.   # ● 経験値情報の描画
  255.   #     x : 描画先 X 座標
  256.   #     y : 描画先 Y 座標
  257.   #--------------------------------------------------------------------------
  258.   def draw_exp_info(x, y)
  259.     s_next = sprintf(Vocab::ExpNext, Vocab::level)
  260.     self.contents.font.color = system_color
  261.     self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
  262.     self.contents.draw_text(x, y + WLH * 2, 180, WLH, s_next)
  263.     draw_actor_exp(@actor, x, y + WLH * 1)
  264.     draw_actor_next_exp(@actor, x, y + WLH * 3)
  265.   end
  266. end
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
11 小时
注册时间
2011-7-9
帖子
30
3
 楼主| 发表于 2011-7-12 10:16:12 | 只看该作者
Cherry 发表于 2011-7-11 21:06
这个怎么样:

啊~看起来很不错哦~~~谢谢你哦
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 07:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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