Project1
标题:
另一问……有关战斗镜头和血条显示的冲突
[打印本页]
作者:
泥亾
时间:
2015-8-22 23:02
标题:
另一问……有关战斗镜头和血条显示的冲突
本帖最后由 泥亾 于 2015-8-22 23:09 编辑
之前战斗镜头【攻击时放大画面】和血条显示脚本都是用芙蕾雅的,后来添加了其他脚本,和血条冲突就把血条脚本替换掉了,但是新添加的脚本和战斗镜头不是同步的,即镜头放大时,血条停留在原地,没有放大还和原场景分离,猜测两种血条脚本不是同一种刷新频率,求如何修改?゚(つд`゚)
第一张图是正常显示血条的情况,第二张图是在攻击左边的史莱姆,此时战斗镜头脚本以左边史莱姆为中心放大画面,而血条不跟着放大和移动……
附不同步的这个血条脚本【芙蕾雅的就不放了大家都有……】
#==============================================================================
# ■エネミーの状態を表示 for RGSS3 Ver0.80-α
# □作成者 kure
#==============================================================================
$kure_base_script = {} if $kure_base_script == nil
$kure_base_script[:InfoBar] = 100
p "エネミーの情報表示"
module KURE
module InfoBar
#初期設定(変更しない事)-----------------------------------------------------
COLOR = []
#表示色(IDによって割り当てが決まっています。)
#バーの背景色(ID0)
COLOR[0] = Color.new(32 ,32, 64, 255)
#HPバーの色(ID1,ID2)
COLOR[1] = Color.new(224 ,128, 64, 255)
COLOR[2] = Color.new(240 ,192, 64, 255)
end
end
#==============================================================================
# ■ RPG::Enemy(追加定義)
#==============================================================================
class RPG::Enemy < RPG::BaseItem
#--------------------------------------------------------------------------
# ☆ バーの表示幅の定義(追加定義)
#--------------------------------------------------------------------------
def infobar_width
@note.match(/<情報表示幅\s?(\d+)\s?>/)
return 100 unless $1
return $1.to_i
end
#--------------------------------------------------------------------------
# ☆ バーの表示幅の定義(追加定義)
#--------------------------------------------------------------------------
def infobar_visible?
return false if @note.include?("<情報非表示>")
return true
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ☆ バーの表示幅の定義(追加定義)
#--------------------------------------------------------------------------
def infobar_width
return enemy.infobar_width
end
#--------------------------------------------------------------------------
# ☆ バーの表示幅の定義(追加定義)
#--------------------------------------------------------------------------
def infobar_visible?
return enemy.infobar_visible?
end
end
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 敵キャラスプライトの作成(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_basescript_before_create_enemies create_enemies
def create_enemies
k_basescript_before_create_enemies
@enemy_info_bar = $game_troop.members.reverse.collect do |enemy|
Sprite_Infobar.new(@viewport1, enemy)
end
end
#--------------------------------------------------------------------------
# ● 敵キャラスプライトの更新(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_basescript_before_update_enemies update_enemies
def update_enemies
k_basescript_before_update_enemies
@enemy_info_bar.each {|sprite| sprite.update }
end
#--------------------------------------------------------------------------
# ● 敵キャラスプライトの解放(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_basescript_before_dispose_enemies dispose_enemies
def dispose_enemies
k_basescript_before_dispose_enemies
@enemy_info_bar.each {|sprite| sprite.dispose }
end
end
#==============================================================================
# ■ Sprite_Infobar
#==============================================================================
class Sprite_Infobar < Sprite_Base
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@fill_w = nil
@bitmap_data = Cache.battler(battler.battler_name, battler.battler_hue)
@state = battler.states
@icon_set = Cache.system("Iconset")
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
if @battler
@use_sprite = @battler.use_sprite?
if @use_sprite
update_bitmap
update_origin
update_position
end
else
self.bitmap = nil
end
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
bitmap.dispose if bitmap
super
end
#--------------------------------------------------------------------------
# ● 転送元ビットマップの更新
#--------------------------------------------------------------------------
def update_bitmap
fill_w = @battler.infobar_width * (@battler.hp.to_f / @battler.mhp)
state = battler.states
if @fill_w != fill_w or @state != state
@fill_w = fill_w
@state = state
width = @battler.infobar_width + 4
new_bitmap = Bitmap.new(width, 35)
@state.each_with_index {|state, index|
next if 24 * (index + 1) > new_bitmap.width
rect = Rect.new(state.icon_index % 16 * 24, state.icon_index / 16 * 24, 24, 24)
new_bitmap.blt(24 * index, 0, @icon_set, rect, 255)
}
new_bitmap.fill_rect(0, 25, width, 10, color(0))
new_bitmap.gradient_fill_rect(2, 27, fill_w, 6, color(1), color(2))
self.bitmap = new_bitmap
init_visibility
self.opacity = 0 unless @battler.infobar_visible?
end
end
#--------------------------------------------------------------------------
# ● 可視状態の初期化
#--------------------------------------------------------------------------
def init_visibility
@battler_visible = @battler.alive?
self.opacity = 255
self.opacity = 0 unless @battler_visible
end
#--------------------------------------------------------------------------
# ● 文字色取得
#--------------------------------------------------------------------------
def color(num)
return KURE::InfoBar::COLOR[num]
end
#--------------------------------------------------------------------------
# ● 原点の更新
#--------------------------------------------------------------------------
def update_origin
if bitmap
self.ox = bitmap.width / 2
self.oy = bitmap.height
end
end
#--------------------------------------------------------------------------
# ● 位置の更新
#--------------------------------------------------------------------------
def update_position
init_visibility
self.x = @battler.screen_x
self.y = @battler.screen_y - @bitmap_data.height
self.z = @battler.screen_z + 10
end
end
复制代码
1.png
(242.64 KB, 下载次数: 29)
下载附件
保存到相册
2015-8-22 23:07 上传
2.png
(272.14 KB, 下载次数: 29)
下载附件
保存到相册
2015-8-22 23:07 上传
作者:
泥亾
时间:
2015-8-23 13:21
自顶!d=====( ̄▽ ̄*)b
作者:
流浪杰哥
时间:
2015-11-16 22:45
如何解决呢
作者:
流浪杰哥
时间:
2015-11-16 22:45
我遇到跟你一样的问题了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1