Project1
标题:
新手问题:怎么让战斗中的敌人也有血条
[打印本页]
作者:
冰舞蝶恋
时间:
2011-5-19 19:29
标题:
新手问题:怎么让战斗中的敌人也有血条
直接用$data_enemies貌似不行,因为数据库里只有maxhp。。
可是在战斗中敌人是会损伤生命的啊!怎么让敌人也能参与draw_acotr_hp的描绘呢? dsu_plus_rewardpost_czw
作者:
芙兰朵露·斯卡雷特
时间:
2011-5-19 21:48
敌人数据是 Game_Enemy 不是 $data_enemies .
敌人队伍是 Game_Troop . 可以从 Game_Troop 里面开始修改. 配合 Scene_Battle .
作者:
诡异の猫
时间:
2011-5-19 22:58
本帖最后由 诡异の猫 于 2011-5-19 23:02 编辑
回复
冰舞蝶恋
的帖子
参照Window_Base里面的draw_actor_hp方法
def draw_actor_hp(actor, x, y, width = 120)
draw_actor_hp_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
self.contents.font.color = hp_color(actor)
last_font_size = self.contents.font.size
xr = x + width
if width < 120
self.contents.draw_text(xr - 44, y, 44, WLH, actor.hp, 2)
else
self.contents.draw_text(xr - 99, y, 44, WLH, actor.hp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
self.contents.draw_text(xr - 44, y, 44, WLH, actor.maxhp, 2)
end
end
复制代码
这个方法的参数actor是Game_Actor的一个对象,把它换成Game_Enemy的一个对象就行了
比如队伍里面第一个人绘制HP条的代码是
actor = $game_party.members[0]
draw_actor_hp_gauge(actor, x, y, width)
如果是想给敌人队伍里面第一个怪兽绘制HP条则是
enemy = $game_troop.member[0]
draw_actor_hp_gauge(enemy, x, y, width)
不过这个方法只能用于窗口对象中,如果想在Sprite里面画的话就把self.contents改成self.bitmap就可以了
诡异の猫于2011-5-19 23:08补充以下内容:
补充一下,就是Enemy的数据库里面确实只有maxhp的数据,但是敌人当前的HP是通过Game_Enemy里面的@hp变量来储存的,我们在游戏里面调用的敌人一般都是Game_Enemy的对象,data_enemies只是给Game_Enemy类提供一些初始的数据
作者:
Lenneth
时间:
2011-5-20 04:54
修改Sprite_Battler
原版在方法def update_battler_bitmap里边画血条,@battler.hp是当前血量(Game_Battler里边有定义),最大血量Game_Battler里也定义了,好像是@battler.maxhp,对了@battler是敌我通用的。
另外原版默认不显示主角动作,想要刷新主角精灵去修改Game_Actor里的def use_sprite?
如果是横版,Sideview 1 的 def make_battler 里边创建一个新精灵
这是一个简单的横版血量显示,也许可以作为参考
def make_battler 里最后加上
@hp_window = Sprite_Num.new(viewport,battler)
def dispose里边靠中间= =
@hp_window.dispose if @hp_window != nil
def update里边插入倒数第四行,就是 setup_new_effect 上边
@hp_window.update if @hp_window != nil
下边是精灵的脚本,只有数字,要是需要血条就在里边自己画
最后,脚本是我测试时候随便写的,参考而已,能不能用不敢保证
class Sprite_Num < Sprite_Base
attr_accessor :battler
def initialize(viewport,battler = nil)
super(viewport)
@battler = battler
@damage = 0
window(@battler.hp)
end
def update
if @battler.hp > 0
@window.pop_text(@battler.hp)
@window.x = @battler.position_x - 32
@window.y = @battler.position_y - 5
else
@window.openness = 0 if @window.openness > 0
end
end
def dispose
super
@window.dispose if @window != nil
end
def window(text)
@window = Window_Dam.new(@battler.position_x - 32, @battler.position_y - 5)
@window.pop_text(text)
end
end
class Window_Dam < Window_Base
#--------------------------------------------------------------------------
# ● 客观初期化
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, 46)
self.opacity = 0
end
#--------------------------------------------------------------------------
# ● 窗口内容的作成
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# ● 状态设定
#--------------------------------------------------------------------------
def pop_text(text, align = 1)
if text != @text or align != @align
self.contents.clear
self.width = self.contents.text_size(text).width + 36
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.draw_text(0,-8, width - 32, 32, text, align)
@text = text
@align = align
end
end
end
作者:
shinliwei
时间:
2011-5-20 08:09
333.jpg
(39.06 KB, 下载次数: 16)
下载附件
保存到相册
2011-5-20 08:08 上传
不知道你是不是要这个啊?
作者:
summer92
时间:
2011-5-20 11:16
我记得有现成的显血脚本
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1