Project1

标题: 另一问……有关战斗镜头和血条显示的冲突 [打印本页]

作者: 泥亾    时间: 2015-8-22 23:02
标题: 另一问……有关战斗镜头和血条显示的冲突
本帖最后由 泥亾 于 2015-8-22 23:09 编辑

之前战斗镜头【攻击时放大画面】和血条显示脚本都是用芙蕾雅的,后来添加了其他脚本,和血条冲突就把血条脚本替换掉了,但是新添加的脚本和战斗镜头不是同步的,即镜头放大时,血条停留在原地,没有放大还和原场景分离,猜测两种血条脚本不是同一种刷新频率,求如何修改?゚(つд`゚)
第一张图是正常显示血条的情况,第二张图是在攻击左边的史莱姆,此时战斗镜头脚本以左边史莱姆为中心放大画面,而血条不跟着放大和移动……
附不同步的这个血条脚本【芙蕾雅的就不放了大家都有……】
  1. #==============================================================================
  2. #  ■エネミーの状態を表示 for RGSS3 Ver0.80-α
  3. # □作成者 kure
  4. #==============================================================================
  5. $kure_base_script = {} if $kure_base_script == nil
  6. $kure_base_script[:InfoBar] = 100
  7. p "エネミーの情報表示"
  8. module KURE
  9.   module InfoBar
  10.     #初期設定(変更しない事)-----------------------------------------------------
  11.     COLOR = []

  12.     #表示色(IDによって割り当てが決まっています。)
  13.       #バーの背景色(ID0)
  14.       COLOR[0] = Color.new(32 ,32, 64, 255)

  15.       #HPバーの色(ID1,ID2)
  16.       COLOR[1] = Color.new(224 ,128, 64, 255)
  17.       COLOR[2] = Color.new(240 ,192, 64, 255)

  18.   end
  19. end

  20. #==============================================================================
  21. # ■ RPG::Enemy(追加定義)
  22. #==============================================================================
  23. class RPG::Enemy < RPG::BaseItem
  24.   #--------------------------------------------------------------------------
  25.   # ☆ バーの表示幅の定義(追加定義)
  26.   #--------------------------------------------------------------------------  
  27.   def infobar_width
  28.     @note.match(/<情報表示幅\s?(\d+)\s?>/)
  29.     return 100 unless $1
  30.     return $1.to_i
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ☆ バーの表示幅の定義(追加定義)
  34.   #--------------------------------------------------------------------------  
  35.   def infobar_visible?
  36.     return false if @note.include?("<情報非表示>")
  37.     return true
  38.   end
  39. end

  40. #==============================================================================
  41. # ■ Game_Enemy
  42. #==============================================================================
  43. class Game_Enemy < Game_Battler
  44.   #--------------------------------------------------------------------------
  45.   # ☆ バーの表示幅の定義(追加定義)
  46.   #--------------------------------------------------------------------------  
  47.   def infobar_width
  48.     return enemy.infobar_width
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ☆ バーの表示幅の定義(追加定義)
  52.   #--------------------------------------------------------------------------  
  53.   def infobar_visible?
  54.     return enemy.infobar_visible?
  55.   end
  56. end

  57. #==============================================================================
  58. # ■ Spriteset_Battle
  59. #==============================================================================
  60. class Spriteset_Battle
  61.   #--------------------------------------------------------------------------
  62.   # ● 敵キャラスプライトの作成(エイリアス再定義)
  63.   #--------------------------------------------------------------------------
  64.   alias k_basescript_before_create_enemies create_enemies
  65.   def create_enemies
  66.     k_basescript_before_create_enemies
  67.     @enemy_info_bar = $game_troop.members.reverse.collect do |enemy|
  68.       Sprite_Infobar.new(@viewport1, enemy)
  69.     end
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 敵キャラスプライトの更新(エイリアス再定義)
  73.   #--------------------------------------------------------------------------
  74.   alias k_basescript_before_update_enemies update_enemies
  75.   def update_enemies
  76.     k_basescript_before_update_enemies
  77.     @enemy_info_bar.each {|sprite| sprite.update }
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 敵キャラスプライトの解放(エイリアス再定義)
  81.   #--------------------------------------------------------------------------
  82.   alias k_basescript_before_dispose_enemies dispose_enemies
  83.   def dispose_enemies
  84.     k_basescript_before_dispose_enemies
  85.     @enemy_info_bar.each {|sprite| sprite.dispose }
  86.   end
  87. end

  88. #==============================================================================
  89. # ■ Sprite_Infobar
  90. #==============================================================================
  91. class Sprite_Infobar < Sprite_Base
  92.   #--------------------------------------------------------------------------
  93.   # ● 公開インスタンス変数
  94.   #--------------------------------------------------------------------------
  95.   attr_accessor :battler
  96.   #--------------------------------------------------------------------------
  97.   # ● オブジェクト初期化
  98.   #--------------------------------------------------------------------------
  99.   def initialize(viewport, battler = nil)
  100.     super(viewport)
  101.     @battler = battler
  102.     @fill_w = nil
  103.     @bitmap_data = Cache.battler(battler.battler_name, battler.battler_hue)
  104.     @state = battler.states
  105.     @icon_set = Cache.system("Iconset")
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● フレーム更新
  109.   #--------------------------------------------------------------------------
  110.    def update
  111.     super
  112.     if @battler
  113.       @use_sprite = @battler.use_sprite?
  114.       if @use_sprite
  115.         update_bitmap
  116.         update_origin
  117.         update_position
  118.       end
  119.     else
  120.       self.bitmap = nil
  121.     end
  122.   end

  123.   #--------------------------------------------------------------------------
  124.   # ● 解放
  125.   #--------------------------------------------------------------------------
  126.   def dispose
  127.     bitmap.dispose if bitmap
  128.     super
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 転送元ビットマップの更新
  132.   #--------------------------------------------------------------------------
  133.   def update_bitmap
  134.     fill_w = @battler.infobar_width * (@battler.hp.to_f / @battler.mhp)
  135.     state = battler.states
  136.     if @fill_w != fill_w or @state != state
  137.       @fill_w = fill_w
  138.       @state = state

  139.       width = @battler.infobar_width + 4

  140.       new_bitmap = Bitmap.new(width, 35)
  141.       @state.each_with_index {|state, index|
  142.         next if 24 * (index + 1) > new_bitmap.width
  143.         rect = Rect.new(state.icon_index % 16 * 24, state.icon_index / 16 * 24, 24, 24)
  144.         new_bitmap.blt(24 * index, 0, @icon_set, rect, 255)
  145.       }
  146.       new_bitmap.fill_rect(0, 25, width, 10, color(0))
  147.       new_bitmap.gradient_fill_rect(2, 27, fill_w, 6, color(1), color(2))

  148.       self.bitmap = new_bitmap
  149.       init_visibility

  150.       self.opacity = 0 unless @battler.infobar_visible?
  151.     end
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 可視状態の初期化
  155.   #--------------------------------------------------------------------------
  156.   def init_visibility
  157.     @battler_visible = @battler.alive?
  158.     self.opacity = 255     
  159.     self.opacity = 0 unless @battler_visible
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 文字色取得
  163.   #--------------------------------------------------------------------------
  164.   def color(num)
  165.     return KURE::InfoBar::COLOR[num]
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 原点の更新
  169.   #--------------------------------------------------------------------------
  170.   def update_origin
  171.     if bitmap
  172.       self.ox = bitmap.width / 2
  173.       self.oy =  bitmap.height
  174.     end
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 位置の更新
  178.   #--------------------------------------------------------------------------
  179.   def update_position
  180.        init_visibility      
  181.     self.x = @battler.screen_x
  182.     self.y = @battler.screen_y - @bitmap_data.height
  183.     self.z = @battler.screen_z + 10
  184.   end
  185. end
复制代码

1.png (242.64 KB, 下载次数: 29)

1.png

2.png (272.14 KB, 下载次数: 29)

2.png

作者: 泥亾    时间: 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