赞 | 0 |
VIP | 118 |
好人卡 | 0 |
积分 | 6 |
经验 | 28673 |
最后登录 | 2017-5-7 |
在线时间 | 10 小时 |
Lv2.观梦者 龙骑
- 梦石
- 0
- 星屑
- 555
- 在线时间
- 10 小时
- 注册时间
- 2007-12-31
- 帖子
- 2030
|
- TD脚本教学——画血槽
- 好久没写教程了,这次应一网友要求,写一个怎么画血槽的脚本教程
- 这只是个简单的教程,画出来的血槽也很简陋,因为已经有这类脚本了,这里只把大概的原理说给大家好了。
- 首先打开工程的脚本编辑器,找到Window_Base
- 之前有教学里说过,在Window_Base里提供了些多窗体使用的函数,里面也包括画HP的函数,这里我们只要修改一下画HP的函数就好了
- 在Window_Base里找到
- draw_actor_hp(actor, x, y, width = 144)
- 这一行,这就是画HP的函数
- 我们先来看一下完整的函数
- #--------------------------------------------------------------------------
- # ● 描绘 HP
- # actor : 角色
- # x : 描画目标 X 坐标
- # y : 描画目标 Y 坐标
- # width : 描画目标的宽
- #--------------------------------------------------------------------------
- def draw_actor_hp(actor, x, y, width = 144)
- # 描绘字符串 "HP"
- self.contents.font.color = system_color
- self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
- # 计算描绘 MaxHP 所需的空间
- if width - 32 >= 108
- hp_x = x + width - 108
- flag = true
- elsif width - 32 >= 48
- hp_x = x + width - 48
- flag = false
- end
- # 描绘 HP
- self.contents.font.color = actor.hp == 0 ? knockout_color :
- actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
- self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
- # 描绘 MaxHP
- if flag
- self.contents.font.color = normal_color
- self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
- self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
- end
- end
- 描绘HP和描绘MaxHP是写出HP和最大HP的值,在函数中,后描绘的物体会默认覆盖住先描绘的物体,为了使血槽不遮住原来描绘的字体,所以我们要把代码加在
- def draw_actor_hp(actor, x, y, width = 144)
- 后,加入以下代码
- self.contents.fill_rect(x,y,width,8,Color.new(0,0,0))
- hp_width = (width - 2)*(actor.hp/(actor.maxhp+0.1))
- self.contents.fill_rect(x+1,y+1,hp_width,6,Color.new(255,0,0))
- 这里说明一下fill_rect
- fill_rect(x,y,width,height,color)是用color指定的颜色填充一个以(x,y)为顶点,长宽分别为width,height的矩形
- 上面代码的第一行是用黑色填充一个矩形,用来做血槽的底
- 第二行是计算血槽的量的宽度
- 在这里actor.maxhp加上了个0.1是为了让它进行有小数的计算
- 第三行是画用来表示量的矩形,这里x和y都加了1,并且高和宽都减了2是为了让底露出点边宽
- 这样,血槽就画好了,画SP槽和这个的方法是一样的
- 坐标可能不大对,大家也以之后自己调整
- 现在,自己去游戏里看看效果吧
复制代码 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|