¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3397 miembros registrados.
El último usuario registrado es LucasGF.

Nuestros miembros han publicado un total de 79808 mensajes en 11257 argumentos.
Navega con Google Chrome
[DESCARGA]

Editar Zoom batalla (El angulo pega un "salto")

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-06, 00:02

Me he dado cuenta gracias a Wecoc de que al usar este script de Zoom en batalla tiene lugar un "salto" que desmejora el resultado del script

El tema es que al terminar de seleccionar al enemigo o al personaje que quieres que sea atacado o cuarado; el angulo de cámara pega un salto absurdo antes de regresar a ese enemigo, y la verdad es que no tiene sentido que haga eso... así que me gustaría que una de dos, o no lo hiciera o que lo hiciera más lento, para que por lo menos no se note tan: FLASS... PUM!!

Dejo el Script:
Código:
# La 'vue' du joueur n'est plus fixe pendant les combats.
# Krazplay
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module XRXS_BP8
  #
  # カメラ移動スピード基準値 (基本的に小さいほうが速い)
  #
  SPEED = 8
  #
  # XGAサイズを設定
  #
  GA = Rect.new(-192, -144, 1024, 768)
end
#------------------------------------------------------------------------------
# ▽ 可動カメラの動き設定
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● パーティコマンドフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase2 start_phase2
  def start_phase2
    # カメラ:センタリング
    $xcam.centering
    # 呼び戻す
    xrxs_bp8_start_phase2
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターコマンドフェーズ : エネミー選択)
  #--------------------------------------------------------------------------
 
  # Wecoc edit 1
  alias xrxs_bp8_update_phase3_actor_select update_phase3_actor_select
  def update_phase3_actor_select
    actor = $game_party.actors[@actor_arrow.index]
    $xcam.watch(actor)
    xrxs_bp8_update_phase3_actor_select
  end
 
  alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  def update_phase3_enemy_select
    enemy = $game_troop.enemies[@enemy_arrow.index]
    $xcam.watch(enemy)
    xrxs_bp8_update_phase3_enemy_select
  end
  #--------------------------------------------------------------------------
  # ● エネミー選択終了
  #--------------------------------------------------------------------------
 
  # Wecoc edit 2
  alias xrxs_bp8_end_actor_select end_actor_select
  def end_actor_select
    $xcam.centering
    xrxs_bp8_end_actor_select
  end

  alias xrxs_bp8_end_enemy_select end_enemy_select
  def end_enemy_select
    $xcam.centering
    xrxs_bp8_end_enemy_select
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step2 update_phase4_step2
  def update_phase4_step2
    # 戻す
    xrxs_bp8_update_phase4_step2
    # ステップ 3 に移行する予定の場合
    if @phase4_step == 3
      # アクティブなバトラーがバトルフィールドに居る場合
      if @active_battler.in_battlefield?
        # カメラ:注目
        $xcam.watch(@active_battler)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    # 戻す
    xrxs_bp8_update_phase4_step3
    # カメラターゲットとなりうるターゲットの X 平均値を計算
    x_average  = 0
    number    = 0
    cam_target = nil
    for target in @target_battlers
      if target.in_battlefield?
        x_average += target.x
        number    += 1
        cam_target = target
      end
    end
    # カメラターゲットが見つかった場合
    if number > 0
      # もし対象アニメが「位置:画面」の場合
      animation = $data_animations[@animation2_id]
      if animation != nil and animation.position == 3
        # カメラ:センタリング
        $xcam.centering
        # カメラ:ズームアウト
        $xcam.zoomout
      elsif number == 1
        # カメラ:注目
        $xcam.watch(cam_target)
      else
        # カメラ:指定 X 位置を注目
        $xcam.watch_at(x_average / number)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● アフターバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase5 start_phase5
  def start_phase5
    # カメラ:センタリング
    $xcam.centering
    # 呼び戻す
    xrxs_bp8_start_phase5
  end
end
#------------------------------------------------------------------------------
# カスタマイズポイントここまで
#==============================================================================

#------------------------------------------------------------------------------
#
#
#
#    ▽ 可動カメラ システム ▽
#
#
#
#==============================================================================
# □ XCam
#------------------------------------------------------------------------------
#  可動カメラを扱うクラスです。
#==============================================================================
class XCam
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader  :x
  attr_reader  :y
  attr_reader  :z
  attr_accessor :x_destination
  attr_accessor :y_destination
  attr_accessor :z_destination
  attr_accessor :watch_battler
  attr_accessor :freeze_count
  #--------------------------------------------------------------------------
  # ○ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    # カメラ初期位置決定
    @x = 320
    @y = 240
    @z = 295
    # カメラ:センタリング
    self.centering
    # 初期化
    @freeze_count = 0
  end
  #--------------------------------------------------------------------------
  # ○ フレーム更新
  #--------------------------------------------------------------------------
  def update
    @moved = false
    # カメラ位置の更新
    if @freeze_count > 0
      # フリーズカウントを減らす
      @freeze_count -= 1
    else
      # スピードの取得
      speed = XRXS_BP8::SPEED
      # カメラ: Z 座標 (優先)
      z_dest = @z_destination
      if @z != z_dest
        @z = slide(@z, z_dest, 1, 74, 296)
        @moved = true
      end
      # カメラ: X 座標
      x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
      if @x != x_dest
        maximum = 192 * (296 - @z) / 111 + 320
        minimum = 640 - maximum
        @x = slide(@x, x_dest, 8, minimum, maximum)
        @moved = true
      end
      # カメラ: Y 座標
      y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
      if @y != y_dest
        maximum = 164 * (296 - @z) / 111 + 240
        minimum = 480 - maximum
        @y = slide(@y, y_dest, 4, minimum, maximum)
        @moved = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ スライド (現在地・目的地から行くべき現在地を返す)
  #--------------------------------------------------------------------------
  def slide(from, to, move_min, to_min, to_max)
    # 移動距離を計算
    distance = (to - from).abs
    # 結果を判別
    if distance < move_min
      result = to
    else
      sign  = from > to ? -1 : 1
      result = from + sign * [distance / XRXS_BP8::SPEED, move_min].max
    end
    # 範囲によって返却
    return [[result, to_min].max, to_max].min
  end
  #--------------------------------------------------------------------------
  # ○ 動いたかどうか?
  #--------------------------------------------------------------------------
  def moved?
    return @moved
  end
  #--------------------------------------------------------------------------
  # ○ センタリング
  #--------------------------------------------------------------------------
  def centering
    @watch_battler = nil
    @x_destination = 320
    @y_destination = 240
    @z_destination = 185
  end
  #--------------------------------------------------------------------------
  # ○ ズームアウト
  #--------------------------------------------------------------------------
  def zoomout
    @z_destination = 222
  end
  #--------------------------------------------------------------------------
  # ○ バトラーを注目
  #--------------------------------------------------------------------------
  def watch(battler)
    @watch_battler = battler
    @z_destination = 176
  end
  #--------------------------------------------------------------------------
  # ○ 指定 X 位置を注目
  #--------------------------------------------------------------------------
  def watch_at(x)
    @watch_battler = nil
    @x_destination =  x
    @y_destination = 240
    @z_destination = 185
  end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader  :x                        # バトルフィールド 横 位置(+が右 )
  attr_reader  :y                        # バトルフィールド 高さ 位置(+が下 )
  attr_reader  :z                        # バトルフィールド奥行き位置(+が手前)
  attr_accessor :zoom                    # 現在のズーム倍率
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか?
  #--------------------------------------------------------------------------
  def in_battlefield?
    return false
  end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか? [オーバーライド]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # 初期化
    @z    = 0
    @zoom = 1.00
    # 呼び戻す
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 X 座標の取得
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 Y 座標の取得
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ■ Game_Actor # Wecoc Edit 3
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか? [オーバーライド]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # 初期化
    @z    = 0
    @zoom = 1.00
    # 呼び戻す
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 X 座標の取得
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 Y 座標の取得
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ○ フレーム更新 (可動カメラ)
  #--------------------------------------------------------------------------
  def update_xcam
    # カメラ位置が動いた場合
    if $xcam.moved?
      # カメラ位置からズーム率を計算
      zoom = 185.00 / $xcam.z
      # 背景の設定更新
      @battleback_sprite.zoom_x = zoom
      @battleback_sprite.zoom_y = zoom
      @battleback_sprite.x      = -($xcam.x - 320) * zoom - 512 * (zoom - 1)
      @battleback_sprite.y      = -($xcam.y - 240) * zoom - 384 * (zoom - 1)
    end
  end
end
#==============================================================================
# --- バトラースプライト・可動カメラ適用 ---
#==============================================================================
module XRXS_Cam_Deal
  def update
    # 呼び戻す
    super
    # バトラーがバトルフィールドにいない場合は終了
    return if @battler == nil or not @battler.in_battlefield?
    # カメラ Z 座標の取得
    cam_z = $xcam == nil ? 185 : $xcam.z
    #
    # ズーム率の変更
    # ( スプライト座標の再設定は元のメソッドに任せる )
    #
    zoom = 1.00 * 185 / (cam_z - @battler.z)
    self.zoom_x  = zoom
    self.zoom_y  = zoom
    @battler.zoom = zoom
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_Cam_Deal
end
#==============================================================================
# --- ダメージフォロー モジュール ---
#==============================================================================
module XRXS_DamageFollow
  def update
    # 呼び戻す
    super
    # カメラが存在しない場合
    return if $xcam == nil
    # バトラーが nil またはバトルフィールドにいない場合
    return if @battler == nil or not @battler.in_battlefield?
    # 直前カメラ位置から、移動量を算出
    x_moved = @last_cam_x == nil ? 0 : $xcam.x - @last_cam_x
    y_moved = @last_cam_y == nil ? 0 : $xcam.y - @last_cam_y
    # ダメージスプライト配列の作成
    damage_sprites  = [@_damage_sprite]
    damage_sprites += @damage_sprites if @damage_sprites != nil
    # カメラをフォロー
    for sprite in damage_sprites
      next if sprite == nil
      next if sprite.disposed?
      sprite.x -= x_moved
      sprite.y -= y_moved
    end
    # 直前カメラ位置の保持
    @last_cam_x = $xcam.x
    @last_cam_y = $xcam.y
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_DamageFollow
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias xrxs_bp8_main main
  def main
    # 可動カメラの生成
    $xcam = XCam.new
    # 戻す
    xrxs_bp8_main
    # 可動カメラの解放
    $xcam = nil
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # 可動カメラのフレーム更新
    $xcam.update
    # 呼び戻す
    xrxs_bp8_update
  end
end



#------------------------------------------------------------------------------
#
#
#
#    ▽ Full-View システム ▽
#
#
#
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize
    # 呼び戻す
    xrxs_bp8_initialize
    # グラフィックスアレイを取得
    ga = XRXS_BP8::GA
    # ビューポート 0 を作成
    @viewport0 = Viewport.new(ga.x, ga.y, ga.width, ga.height)
    @viewport0.z  = 0
    # ビューポート 1 の設定を変更
    @viewport1.z += 1
    @viewport1.rect.height = 480
    # バトルバックスプライトを再作成 (ビューポート 0 を使用)
    @battleback_sprite.dispose
    @battleback_sprite = Sprite.new(@viewport0)
    @battleback_name = ""
    # バトルバックのフレーム更新
    update_battleback
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias xrxs_bp8_dispose dispose
  def dispose
    # 呼び戻す
    xrxs_bp8_dispose
    # ビューポートを解放
    @viewport0.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # フレーム更新 (バトルバック)
    update_battleback
    # フレーム更新 (可動カメラ)
    update_xcam if defined? update_xcam
    # 呼び戻す
    xrxs_bp8_update
    # 画面のシェイク位置を設定
    @viewport0.ox = $game_screen.shake if @viewport0 != nil
  end
  #--------------------------------------------------------------------------
  # ○ フレーム更新 (バトルバック)
  #--------------------------------------------------------------------------
  def update_battleback
    # バトルバックのファイル名が現在のものと違う場合
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      # グラフィックスアレイを取得
      ga = XRXS_BP8::GA
      # バトルバックの取得と拡大
      bg  = RPG::Cache.battleback(@battleback_name)
      xga  = Bitmap.new(ga.width, ga.height)
      xga.stretch_blt(xga.rect, bg, bg.rect)
      # XGAをバトルバックに設定
      @battleback_sprite.bitmap = xga
    end
  end
end
#==============================================================================
# ---「戦闘中の"画面"アニメの位置修正」モジュール ---
#==============================================================================
module XRXS_FullScreen_AnimationOffset
  def animation_set_sprites(sprites, cell_data, position)
    super
    for i in 0..15
      sprite = sprites[i]
      pattern = cell_data[i, 0]
      if sprite == nil or pattern == nil or pattern == -1
        next
      end
      if position == 3
        if self.viewport != nil
          sprite.y = 160 # この一行だけ変更
        end
      end
    end
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_FullScreen_AnimationOffset
end



Me he dado cuenta de que el error solo sale cuando el enemigo ataca después de ti, osea, si el enemigo es más rápido y empieza turno, el salto no sale.
No sé si servirá de ayuda para arreglarlo, pero yo lo dejo por si a alguien se le enciende la bombilla... XDD

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Wecoc el 2015-01-06, 05:26

Aunque ya dije que no sabía cómo arreglarlo, fijándome en cuando da el error, tengo bastante claro que el problema está en uno de éstos dos métodos, o en ámbos:

update_phase4_step2
update_phase4_step3

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-10, 17:44

¿Y nadie podría intentar hacer algo? >.<

Gracias de todas forma.

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-10, 19:27

A ver, ahi le puse que si la accion es un ataque, la camara NO enfoque al [Atacante], si no que salta directamente al [Atacado]

Código:
# La 'vue' du joueur n'est plus fixe pendant les combats.
# Krazplay
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module XRXS_BP8
  #
  # カメラ移動スピード基準値 (基本的に小さいほうが速い)
  #
  SPEED = 8
  #
  # XGAサイズを設定
  #
  GA = Rect.new(-192, -144, 1024, 768)
end
#------------------------------------------------------------------------------
# ▽ 可動カメラの動き設定
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● パーティコマンドフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase2 start_phase2
  def start_phase2
    # カメラ:センタリング
    $xcam.centering
    # 呼び戻す
    xrxs_bp8_start_phase2
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (アクターコマンドフェーズ : エネミー選択)
  #--------------------------------------------------------------------------
 
  # Wecoc edit 1
  alias xrxs_bp8_update_phase3_actor_select update_phase3_actor_select
  def update_phase3_actor_select
    actor = $game_party.actors[@actor_arrow.index]
    $xcam.watch(actor)
    xrxs_bp8_update_phase3_actor_select
  end
 
  alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  def update_phase3_enemy_select
    enemy = $game_troop.enemies[@enemy_arrow.index]
    $xcam.watch(enemy)
    xrxs_bp8_update_phase3_enemy_select
  end
  #--------------------------------------------------------------------------
  # ● エネミー選択終了
  #--------------------------------------------------------------------------
 
  # Wecoc edit 2
  alias xrxs_bp8_end_actor_select end_actor_select
  def end_actor_select
    $xcam.centering
    xrxs_bp8_end_actor_select
  end

  alias xrxs_bp8_end_enemy_select end_enemy_select
  def end_enemy_select
    $xcam.centering
    xrxs_bp8_end_enemy_select
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step2 update_phase4_step2
  def update_phase4_step2
    # 戻す
    xrxs_bp8_update_phase4_step2

    # ステップ 3 に移行する予定の場合
    if @phase4_step == 3
      # アクティブなバトラーがバトルフィールドに居る場合
      if @active_battler.in_battlefield? and @active_battler.current_action.kind != 0
        # カメラ:注目
        $xcam.watch(@active_battler)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    # 戻す
    xrxs_bp8_update_phase4_step3
    # カメラターゲットとなりうるターゲットの X 平均値を計算
    x_average  = 0
    number    = 0
    cam_target = nil
    for target in @target_battlers
      if target.in_battlefield?
        x_average += target.x
        number    += 1
        cam_target = target
      end
    end
    # カメラターゲットが見つかった場合
    if number > 0
      # もし対象アニメが「位置:画面」の場合
      animation = $data_animations[@animation2_id]
      if animation != nil and animation.position == 3
        # カメラ:センタリング
        $xcam.centering
        # カメラ:ズームアウト
        $xcam.zoomout
      elsif number == 1
        # カメラ:注目
        $xcam.watch(cam_target)
      else
        # カメラ:指定 X 位置を注目
        $xcam.watch_at(x_average / number)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● アフターバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase5 start_phase5
  def start_phase5
    # カメラ:センタリング
    $xcam.centering
    # 呼び戻す
    xrxs_bp8_start_phase5
  end
end
#------------------------------------------------------------------------------
# カスタマイズポイントここまで
#==============================================================================

#------------------------------------------------------------------------------
#
#
#
#    ▽ 可動カメラ システム ▽
#
#
#
#==============================================================================
# □ XCam
#------------------------------------------------------------------------------
#  可動カメラを扱うクラスです。
#==============================================================================
class XCam
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader  :x
  attr_reader  :y
  attr_reader  :z
  attr_accessor :x_destination
  attr_accessor :y_destination
  attr_accessor :z_destination
  attr_accessor :watch_battler
  attr_accessor :freeze_count
  #--------------------------------------------------------------------------
  # ○ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    # カメラ初期位置決定
    @x = 320
    @y = 240
    @z = 295
    # カメラ:センタリング
    self.centering
    # 初期化
    @freeze_count = 0
  end
  #--------------------------------------------------------------------------
  # ○ フレーム更新
  #--------------------------------------------------------------------------
  def update
    @moved = false
    # カメラ位置の更新
    if @freeze_count > 0
      # フリーズカウントを減らす
      @freeze_count -= 1
    else
      # スピードの取得
      speed = XRXS_BP8::SPEED
      # カメラ: Z 座標 (優先)
      z_dest = @z_destination
      if @z != z_dest
        @z = slide(@z, z_dest, 1, 74, 296)
        @moved = true
      end
      # カメラ: X 座標
      x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
      if @x != x_dest
        maximum = 192 * (296 - @z) / 111 + 320
        minimum = 640 - maximum
        @x = slide(@x, x_dest, 8, minimum, maximum)
        @moved = true
      end
      # カメラ: Y 座標
      y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
      if @y != y_dest
        maximum = 164 * (296 - @z) / 111 + 240
        minimum = 480 - maximum
        @y = slide(@y, y_dest, 4, minimum, maximum)
        @moved = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ スライド (現在地・目的地から行くべき現在地を返す)
  #--------------------------------------------------------------------------
  def slide(from, to, move_min, to_min, to_max)
    # 移動距離を計算
    distance = (to - from).abs
    # 結果を判別
    if distance < move_min
      result = to
    else
      sign  = from > to ? -1 : 1
      result = from + sign * [distance / XRXS_BP8::SPEED, move_min].max
    end
    # 範囲によって返却
    return [[result, to_min].max, to_max].min
  end
  #--------------------------------------------------------------------------
  # ○ 動いたかどうか?
  #--------------------------------------------------------------------------
  def moved?
    return @moved
  end
  #--------------------------------------------------------------------------
  # ○ センタリング
  #--------------------------------------------------------------------------
  def centering
    @watch_battler = nil
    @x_destination = 320
    @y_destination = 240
    @z_destination = 185
  end
  #--------------------------------------------------------------------------
  # ○ ズームアウト
  #--------------------------------------------------------------------------
  def zoomout
    @z_destination = 222
  end
  #--------------------------------------------------------------------------
  # ○ バトラーを注目
  #--------------------------------------------------------------------------
  def watch(battler)
    @watch_battler = battler
    @z_destination = 176
  end
  #--------------------------------------------------------------------------
  # ○ 指定 X 位置を注目
  #--------------------------------------------------------------------------
  def watch_at(x)
    @watch_battler = nil
    @x_destination =  x
    @y_destination = 240
    @z_destination = 185
  end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader  :x                        # バトルフィールド 横 位置(+が右 )
  attr_reader  :y                        # バトルフィールド 高さ 位置(+が下 )
  attr_reader  :z                        # バトルフィールド奥行き位置(+が手前)
  attr_accessor :zoom                    # 現在のズーム倍率
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか?
  #--------------------------------------------------------------------------
  def in_battlefield?
    return false
  end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか? [オーバーライド]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # 初期化
    @z    = 0
    @zoom = 1.00
    # 呼び戻す
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 X 座標の取得
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 Y 座標の取得
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ■ Game_Actor # Wecoc Edit 3
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ○ バトルフィールド上に居るか? [オーバーライド]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # 初期化
    @z    = 0
    @zoom = 1.00
    # 呼び戻す
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 X 座標の取得
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ● バトル画面 Y 座標の取得
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ○ フレーム更新 (可動カメラ)
  #--------------------------------------------------------------------------
  def update_xcam
    # カメラ位置が動いた場合
    if $xcam.moved?
      # カメラ位置からズーム率を計算
      zoom = 185.00 / $xcam.z
      # 背景の設定更新
      @battleback_sprite.zoom_x = zoom
      @battleback_sprite.zoom_y = zoom
      @battleback_sprite.x      = -($xcam.x - 320) * zoom - 512 * (zoom - 1)
      @battleback_sprite.y      = -($xcam.y - 240) * zoom - 384 * (zoom - 1)
    end
  end
end
#==============================================================================
# --- バトラースプライト・可動カメラ適用 ---
#==============================================================================
module XRXS_Cam_Deal
  def update
    # 呼び戻す
    super
    # バトラーがバトルフィールドにいない場合は終了
    return if @battler == nil or not @battler.in_battlefield?
    # カメラ Z 座標の取得
    cam_z = $xcam == nil ? 185 : $xcam.z
    #
    # ズーム率の変更
    # ( スプライト座標の再設定は元のメソッドに任せる )
    #
    zoom = 1.00 * 185 / (cam_z - @battler.z)
    self.zoom_x  = zoom
    self.zoom_y  = zoom
    @battler.zoom = zoom
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_Cam_Deal
end
#==============================================================================
# --- ダメージフォロー モジュール ---
#==============================================================================
module XRXS_DamageFollow
  def update
    # 呼び戻す
    super
    # カメラが存在しない場合
    return if $xcam == nil
    # バトラーが nil またはバトルフィールドにいない場合
    return if @battler == nil or not @battler.in_battlefield?
    # 直前カメラ位置から、移動量を算出
    x_moved = @last_cam_x == nil ? 0 : $xcam.x - @last_cam_x
    y_moved = @last_cam_y == nil ? 0 : $xcam.y - @last_cam_y
    # ダメージスプライト配列の作成
    damage_sprites  = [@_damage_sprite]
    damage_sprites += @damage_sprites if @damage_sprites != nil
    # カメラをフォロー
    for sprite in damage_sprites
      next if sprite == nil
      next if sprite.disposed?
      sprite.x -= x_moved
      sprite.y -= y_moved
    end
    # 直前カメラ位置の保持
    @last_cam_x = $xcam.x
    @last_cam_y = $xcam.y
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_DamageFollow
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias xrxs_bp8_main main
  def main
    # 可動カメラの生成
    $xcam = XCam.new
    # 戻す
    xrxs_bp8_main
    # 可動カメラの解放
    $xcam = nil
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # 可動カメラのフレーム更新
    $xcam.update
    # 呼び戻す
    xrxs_bp8_update
  end
end



#------------------------------------------------------------------------------
#
#
#
#    ▽ Full-View システム ▽
#
#
#
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize
    # 呼び戻す
    xrxs_bp8_initialize
    # グラフィックスアレイを取得
    ga = XRXS_BP8::GA
    # ビューポート 0 を作成
    @viewport0 = Viewport.new(ga.x, ga.y, ga.width, ga.height)
    @viewport0.z  = 0
    # ビューポート 1 の設定を変更
    @viewport1.z += 1
    @viewport1.rect.height = 480
    # バトルバックスプライトを再作成 (ビューポート 0 を使用)
    @battleback_sprite.dispose
    @battleback_sprite = Sprite.new(@viewport0)
    @battleback_name = ""
    # バトルバックのフレーム更新
    update_battleback
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias xrxs_bp8_dispose dispose
  def dispose
    # 呼び戻す
    xrxs_bp8_dispose
    # ビューポートを解放
    @viewport0.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # フレーム更新 (バトルバック)
    update_battleback
    # フレーム更新 (可動カメラ)
    update_xcam if defined? update_xcam
    # 呼び戻す
    xrxs_bp8_update
    # 画面のシェイク位置を設定
    @viewport0.ox = $game_screen.shake if @viewport0 != nil
  end
  #--------------------------------------------------------------------------
  # ○ フレーム更新 (バトルバック)
  #--------------------------------------------------------------------------
  def update_battleback
    # バトルバックのファイル名が現在のものと違う場合
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      # グラフィックスアレイを取得
      ga = XRXS_BP8::GA
      # バトルバックの取得と拡大
      bg  = RPG::Cache.battleback(@battleback_name)
      xga  = Bitmap.new(ga.width, ga.height)
      xga.stretch_blt(xga.rect, bg, bg.rect)
      # XGAをバトルバックに設定
      @battleback_sprite.bitmap = xga
    end
  end
end
#==============================================================================
# ---「戦闘中の"画面"アニメの位置修正」モジュール ---
#==============================================================================
module XRXS_FullScreen_AnimationOffset
  def animation_set_sprites(sprites, cell_data, position)
    super
    for i in 0..15
      sprite = sprites[i]
      pattern = cell_data[i, 0]
      if sprite == nil or pattern == nil or pattern == -1
        next
      end
      if position == 3
        if self.viewport != nil
          sprite.y = 160 # この一行だけ変更
        end
      end
    end
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_FullScreen_AnimationOffset
end


Fijate si se resuelve el problema (ya que en parte estoy adivinando si lo que arregle es lo que vos querias arreglar XD)

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-10, 20:33

Pues no, parece que no se a solucionado...
Mira, el error al que me refiero es el que surge justo después de configurar la acción tras los comandos y el enemigo es más lento que tú.

Si tú atacas al enemigo primero, el angulo se enfoca de golpe en el atacante y después se traslada al atacado, lo que es inútil pues tras configurar al atacado no necesitaría ir al atacante y después al atacado. No sé si se me entiende o no... XDDD

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-10, 21:40

Justamente eso es lo que modifique, pero solo si realizas un ataque normal.

Si queres que nunca enfoque al atacante, lo que tenes que quitar es (linea 67)

Código:
 alias xrxs_bp8_update_phase4_step2 update_phase4_step2
  def update_phase4_step2
    # ??
    xrxs_bp8_update_phase4_step2

    # ???? 3 ??????????
    if @phase4_step == 3
      # ????????????????????????
      if @active_battler.in_battlefield? and @active_battler.current_action.kind != 0
        # ???:??
        $xcam.watch(@active_battler)
      end
    end
  end


Todo eso.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-13, 17:39

Pues no, ni con eso se arregla...

Mira, aquí dejo un minivídeo de lo que digo:
Se trata del "salto" tan "FLAS PUN" que se muestra una vez terminas de decir qué ataque haces, la cámara corre a enfocar al personaje y luego se marcha de nuevo al enemigo seleccionado, cosa que no debería de ser necesario si no hay más enemigos ni ningún otro personaje.
https://www.youtube.com/watch?v=XMAcozxtZzM&feature=youtu.be
Ignora las animaciones de batalla y el que el battlers desaparezca... todavía ando en fase de pruebas.

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-13, 23:04

Sip, eso es lo que arregle... no tendras el script puesto 2 veces, o algo asi?

Hace una prueba, crea un proyecto nuevo, pone solamente el script con mi edit, y fijate si te sigue pasando.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-14, 13:04

Sí, sigue con el mismo problema aún en un proyecto nuevo, con tu edit y el código comprendido desde la linea 67 hasta los 3 "end" borrado.

No sé qué pasa... ¿Será que mi maker es de una versión diferente o algo...?

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-14, 18:01

Hay hay hay....

Si bien es verdad que con mi primer modificacion no se arreglaba DEL TODO, formaba parte de la solucion.
Con la version original, el salto lo hace siempre, con mi primer edit el salto lo hace solo con el primer personaje que ataca.

Por cierto, quité tambien el edit de Wecoc (puse el codigo original en esa parte), ya que tambien era parte del problema. (No se exactamente que hacia ese codigo, pero llamaba todo el tiempo a la reposicion de la camara y pasaban cosas raras)

En fin, ahora esta todo arreglado:

Código:
# La 'vue' du joueur n'est plus fixe pendant les combats.
# Krazplay
#==============================================================================
# ? ??????????
#==============================================================================
module XRXS_BP8
  #
  # ???????????? (????????????)
  #
  SPEED = 8
  #
  # XGA??????
  #
  GA = Rect.new(-192, -144, 1024, 768)
end
#------------------------------------------------------------------------------
# ? ??????????
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase2 start_phase2
  def start_phase2
    # ???:??????
    $xcam.centering
    # ????
    xrxs_bp8_start_phase2
  end
  #--------------------------------------------------------------------------
  # * Frame Updat (actor command phase : enemy selection)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  def update_phase3_enemy_select
      # Acquiring the enemy which currently being selected
      enemy = $game_troop.enemies[@enemy_arrow.index]
      # Camera: Attention
      if @last_enemy_arrow != enemy
          $xcam.watch(enemy)
          @last_enemy_arrow = enemy
      end
      # Reset Call
      xrxs_bp8_update_phase3_enemy_select
  end
  #--------------------------------------------------------------------------
  # * End Enemy Selection
  #--------------------------------------------------------------------------
  alias xrxs_bp8_end_enemy_select end_enemy_select
  def end_enemy_select
      # Camera: Centering
      if @actor_index != $game_party.actors.size-1
        $xcam.centering
      end
     
      @last_enemy_arrow = nil
      # Original Call
      xrxs_bp8_end_enemy_select
  end

  #--------------------------------------------------------------------------
  # ? ?????? (??????? ???? 3 : ??????????)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    # ??
    xrxs_bp8_update_phase4_step3
    # ??????????????????? X ??????
    x_average  = 0
    number    = 0
    cam_target = nil
    for target in @target_battlers
      if target.in_battlefield?
        x_average += target.x
        number    += 1
        cam_target = target
      end
    end
    # ????????????????
    if number > 0
      # ???????????:??????
      animation = $data_animations[@animation2_id]
      if animation != nil and animation.position == 3
        # ???:??????
        $xcam.centering
        # ???:??????
        $xcam.zoomout
      elsif number == 1
        # ???:??
        $xcam.watch(cam_target)
      else
        # ???:?? X ?????
        $xcam.watch_at(x_average / number)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase5 start_phase5
  def start_phase5
    # ???:??????
    $xcam.centering
    # ????
    xrxs_bp8_start_phase5
  end
end
#------------------------------------------------------------------------------
# ??????????????
#==============================================================================

#------------------------------------------------------------------------------
#
#
#
#    ? ????? ???? ?
#
#
#
#==============================================================================
# ? XCam
#------------------------------------------------------------------------------
#  ??????????????
#==============================================================================
class XCam
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_reader  :x
  attr_reader  :y
  attr_reader  :z
  attr_accessor :x_destination
  attr_accessor :y_destination
  attr_accessor :z_destination
  attr_accessor :watch_battler
  attr_accessor :freeze_count
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def initialize
    # ?????????
    @x = 320
    @y = 240
    @z = 295
    # ???:??????
    self.centering
    # ???
    @freeze_count = 0
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def update
    @moved = false
    # ????????
    if @freeze_count > 0
      # ????????????
      @freeze_count -= 1
    else
      # ???????
      speed = XRXS_BP8::SPEED
      # ???: Z ?? (??)
      z_dest = @z_destination
      if @z != z_dest
        @z = slide(@z, z_dest, 1, 74, 296)
        @moved = true
      end
      # ???: X ??
      x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
      if @x != x_dest
        maximum = 192 * (296 - @z) / 111 + 320
        minimum = 640 - maximum
        @x = slide(@x, x_dest, 8, minimum, maximum)
        @moved = true
      end
      # ???: Y ??
      y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
      if @y != y_dest
        maximum = 164 * (296 - @z) / 111 + 240
        minimum = 480 - maximum
        @y = slide(@y, y_dest, 4, minimum, maximum)
        @moved = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ???? (???·???????????????)
  #--------------------------------------------------------------------------
  def slide(from, to, move_min, to_min, to_max)
    # ???????
    distance = (to - from).abs
    # ?????
    if distance < move_min
      result = to
    else
      sign  = from > to ? -1 : 1
      result = from + sign * [distance / XRXS_BP8::SPEED, move_min].max
    end
    # ????????
    return [[result, to_min].max, to_max].min
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def moved?
    return @moved
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def centering
    @watch_battler = nil
    @x_destination = 320
    @y_destination = 240
    @z_destination = 185
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def zoomout
    @z_destination = 222
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def watch(battler)
    #p Kernel.caller
    #p battler
    @watch_battler = battler
    @z_destination = 176
  end
  #--------------------------------------------------------------------------
  # ? ?? X ?????
  #--------------------------------------------------------------------------
  def watch_at(x)
    @watch_battler = nil
    @x_destination =  x
    @y_destination = 240
    @z_destination = 185
  end
end
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_reader  :x                        # ???????? ? ??(+?? )
  attr_reader  :y                        # ???????? ?? ??(+?? )
  attr_reader  :z                        # ?????????????(+???)
  attr_accessor :zoom                    # ????????
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def in_battlefield?
    return false
  end
end
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ? ?????????????? [???????]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # ???
    @z    = 0
    @zoom = 1.00
    # ????
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ? ????? X ?????
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ? ????? Y ?????
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ¦ Game_Actor # Wecoc Edit 3
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ? ?????????????? [???????]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # ???
    @z    = 0
    @zoom = 1.00
    # ????
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ? ????? X ?????
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ? ????? Y ?????
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ? ?????? (?????)
  #--------------------------------------------------------------------------
  def update_xcam
    # ???????????
    if $xcam.moved?
      # ??????????????
      zoom = 185.00 / $xcam.z
      # ???????
      @battleback_sprite.zoom_x = zoom
      @battleback_sprite.zoom_y = zoom
      @battleback_sprite.x      = -($xcam.x - 320) * zoom - 512 * (zoom - 1)
      @battleback_sprite.y      = -($xcam.y - 240) * zoom - 384 * (zoom - 1)
    end
  end
end
#==============================================================================
# --- ?????????·??????? ---
#==============================================================================
module XRXS_Cam_Deal
  def update
    # ????
    super
    # ??????????????????????
    return if @battler == nil or not @battler.in_battlefield?
    # ??? Z ?????
    cam_z = $xcam == nil ? 185 : $xcam.z
    #
    # ???????
    # ( ?????????????????????? )
    #
    zoom = 1.00 * 185 / (cam_z - @battler.z)
    self.zoom_x  = zoom
    self.zoom_y  = zoom
    @battler.zoom = zoom
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_Cam_Deal
end
#==============================================================================
# --- ???????? ????? ---
#==============================================================================
module XRXS_DamageFollow
  def update
    # ????
    super
    # ???????????
    return if $xcam == nil
    # ????? nil ?????????????????
    return if @battler == nil or not @battler.in_battlefield?
    # ????????????????
    x_moved = @last_cam_x == nil ? 0 : $xcam.x - @last_cam_x
    y_moved = @last_cam_y == nil ? 0 : $xcam.y - @last_cam_y
    # ??????????????
    damage_sprites  = [@_damage_sprite]
    damage_sprites += @damage_sprites if @damage_sprites != nil
    # ????????
    for sprite in damage_sprites
      next if sprite == nil
      next if sprite.disposed?
      sprite.x -= x_moved
      sprite.y -= y_moved
    end
    # ??????????
    @last_cam_x = $xcam.x
    @last_cam_y = $xcam.y
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_DamageFollow
end
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_main main
  def main
    # ????????
    $xcam = XCam.new
    # ??
    xrxs_bp8_main
    # ????????
    $xcam = nil
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # ????????????
    $xcam.update
    # ????
    xrxs_bp8_update
  end
end



#------------------------------------------------------------------------------
#
#
#
#    ? Full-View ???? ?
#
#
#
#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize
    # ????
    xrxs_bp8_initialize
    # ?????????????
    ga = XRXS_BP8::GA
    # ?????? 0 ???
    @viewport0 = Viewport.new(ga.x, ga.y, ga.width, ga.height)
    @viewport0.z  = 0
    # ?????? 1 ??????
    @viewport1.z += 1
    @viewport1.rect.height = 480
    # ??????????????? (?????? 0 ???)
    @battleback_sprite.dispose
    @battleback_sprite = Sprite.new(@viewport0)
    @battleback_name = ""
    # ?????????????
    update_battleback
  end
  #--------------------------------------------------------------------------
  # ? ??
  #--------------------------------------------------------------------------
  alias xrxs_bp8_dispose dispose
  def dispose
    # ????
    xrxs_bp8_dispose
    # ?????????
    @viewport0.dispose
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # ?????? (??????)
    update_battleback
    # ?????? (?????)
    update_xcam if defined? update_xcam
    # ????
    xrxs_bp8_update
    # ????????????
    @viewport0.ox = $game_screen.shake if @viewport0 != nil
  end
  #--------------------------------------------------------------------------
  # ? ?????? (??????)
  #--------------------------------------------------------------------------
  def update_battleback
    # ???????????????????????
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      # ?????????????
      ga = XRXS_BP8::GA
      # ????????????
      bg  = RPG::Cache.battleback(@battleback_name)
      xga  = Bitmap.new(ga.width, ga.height)
      xga.stretch_blt(xga.rect, bg, bg.rect)
      # XGA??????????
      @battleback_sprite.bitmap = xga
    end
  end
end
#==============================================================================
# ---?????"??"?????????????? ---
#==============================================================================
module XRXS_FullScreen_AnimationOffset
  def animation_set_sprites(sprites, cell_data, position)
    super
    for i in 0..15
      sprite = sprites[i]
      pattern = cell_data[i, 0]
      if sprite == nil or pattern == nil or pattern == -1
        next
      end
      if position == 3
        if self.viewport != nil
          sprite.y = 160 # ????????
        end
      end
    end
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_FullScreen_AnimationOffset
end

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-14, 18:32

GRACIAS
¡¡Ahora queda perfecto!!
Gracias a tí, queda con el acabado justo para que el proyecto quede minimamente presentable.
Sin duda aparecerás en los créditos del juego, pero como pago aquí en el foro, ahora mismo te doy 200 de mis makedas; siendo Admin puedes servirte de ellas tú mismo.
Gracias, gracias, graciaaaaaaasss.

Edt: Ahora veo un pequeño detalle; es que al seleccionar un objeto que usará el personaje, la cámara no lo sigue en la selección, cosa que antes sí sucedía, pero es un detalle sin importancia después de todo...

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-14, 19:12

Ahhh, para eso servia el edit de Wecoc XD. Igual tenia problemas, ahi lo volvi a agregar con algunas mejoras.

Código:
# La 'vue' du joueur n'est plus fixe pendant les combats.
# Krazplay
#==============================================================================
# ? ??????????
#==============================================================================
module XRXS_BP8
  #
  # ???????????? (????????????)
  #
  SPEED = 8
  #
  # XGA??????
  #
  GA = Rect.new(-192, -144, 1024, 768)
end
#------------------------------------------------------------------------------
# ? ??????????
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase2 start_phase2
  def start_phase2
    # ???:??????
    $xcam.centering
    # ????
    xrxs_bp8_start_phase2
  end
  #--------------------------------------------------------------------------
  # * Frame Updat (actor command phase : enemy selection)
  #--------------------------------------------------------------------------
  # Wecoc edit 1
  alias xrxs_bp8_update_phase3_actor_select update_phase3_actor_select
  def update_phase3_actor_select
    actor = $game_party.actors[@actor_arrow.index]
    if @last_actor_arrow != actor
      $xcam.watch(actor)
      @last_actor_arrow = actor
    end
    xrxs_bp8_update_phase3_actor_select
  end
 
  alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  def update_phase3_enemy_select
      # Acquiring the enemy which currently being selected
      enemy = $game_troop.enemies[@enemy_arrow.index]
      # Camera: Attention
      if @last_enemy_arrow != enemy
          $xcam.watch(enemy)
          @last_enemy_arrow = enemy
      end
      # Reset Call
      xrxs_bp8_update_phase3_enemy_select
  end
  #--------------------------------------------------------------------------
  # * End Enemy Selection
  #--------------------------------------------------------------------------
  alias xrxs_bp8_end_enemy_select end_enemy_select
  def end_enemy_select
      # Camera: Centering
      if @actor_index != $game_party.actors.size-1
        $xcam.centering
      end
     
      @last_enemy_arrow = nil
      # Original Call
      xrxs_bp8_end_enemy_select
  end

  #--------------------------------------------------------------------------
  # ? ?????? (??????? ???? 3 : ??????????)
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    # ??
    xrxs_bp8_update_phase4_step3
    # ??????????????????? X ??????
    x_average  = 0
    number    = 0
    cam_target = nil
    for target in @target_battlers
      if target.in_battlefield?
        x_average += target.x
        number    += 1
        cam_target = target
      end
    end
    # ????????????????
    if number > 0
      # ???????????:??????
      animation = $data_animations[@animation2_id]
      if animation != nil and animation.position == 3
        # ???:??????
        $xcam.centering
        # ???:??????
        $xcam.zoomout
      elsif number == 1
        # ???:??
        $xcam.watch(cam_target)
      else
        # ???:?? X ?????
        $xcam.watch_at(x_average / number)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_start_phase5 start_phase5
  def start_phase5
    # ???:??????
    $xcam.centering
    # ????
    xrxs_bp8_start_phase5
  end
end
#------------------------------------------------------------------------------
# ??????????????
#==============================================================================

#------------------------------------------------------------------------------
#
#
#
#    ? ????? ???? ?
#
#
#
#==============================================================================
# ? XCam
#------------------------------------------------------------------------------
#  ??????????????
#==============================================================================
class XCam
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_reader  :x
  attr_reader  :y
  attr_reader  :z
  attr_accessor :x_destination
  attr_accessor :y_destination
  attr_accessor :z_destination
  attr_accessor :watch_battler
  attr_accessor :freeze_count
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def initialize
    # ?????????
    @x = 320
    @y = 240
    @z = 295
    # ???:??????
    self.centering
    # ???
    @freeze_count = 0
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def update
    @moved = false
    # ????????
    if @freeze_count > 0
      # ????????????
      @freeze_count -= 1
    else
      # ???????
      speed = XRXS_BP8::SPEED
      # ???: Z ?? (??)
      z_dest = @z_destination
      if @z != z_dest
        @z = slide(@z, z_dest, 1, 74, 296)
        @moved = true
      end
      # ???: X ??
      x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
      if @x != x_dest
        maximum = 192 * (296 - @z) / 111 + 320
        minimum = 640 - maximum
        @x = slide(@x, x_dest, 8, minimum, maximum)
        @moved = true
      end
      # ???: Y ??
      y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
      if @y != y_dest
        maximum = 164 * (296 - @z) / 111 + 240
        minimum = 480 - maximum
        @y = slide(@y, y_dest, 4, minimum, maximum)
        @moved = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ???? (???·???????????????)
  #--------------------------------------------------------------------------
  def slide(from, to, move_min, to_min, to_max)
    # ???????
    distance = (to - from).abs
    # ?????
    if distance < move_min
      result = to
    else
      sign  = from > to ? -1 : 1
      result = from + sign * [distance / XRXS_BP8::SPEED, move_min].max
    end
    # ????????
    return [[result, to_min].max, to_max].min
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def moved?
    return @moved
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def centering
    @watch_battler = nil
    @x_destination = 320
    @y_destination = 240
    @z_destination = 185
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def zoomout
    @z_destination = 222
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def watch(battler)
    #p Kernel.caller
    #p battler
    @watch_battler = battler
    @z_destination = 176
  end
  #--------------------------------------------------------------------------
  # ? ?? X ?????
  #--------------------------------------------------------------------------
  def watch_at(x)
    @watch_battler = nil
    @x_destination =  x
    @y_destination = 240
    @z_destination = 185
  end
end
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_reader  :x                        # ???????? ? ??(+?? )
  attr_reader  :y                        # ???????? ?? ??(+?? )
  attr_reader  :z                        # ?????????????(+???)
  attr_accessor :zoom                    # ????????
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def in_battlefield?
    return false
  end
end
#==============================================================================
# ¦ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ? ?????????????? [???????]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # ???
    @z    = 0
    @zoom = 1.00
    # ????
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ? ????? X ?????
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ? ????? Y ?????
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ¦ Game_Actor # Wecoc Edit 3
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ? ?????????????? [???????]
  #--------------------------------------------------------------------------
  def in_battlefield?
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize(*args)
    # ???
    @z    = 0
    @zoom = 1.00
    # ????
    xrxs_bp8_initialize(*args)
  end
  #--------------------------------------------------------------------------
  # ? ????? X ?????
  #--------------------------------------------------------------------------
  alias x screen_x
  def screen_x
    return self.x if $xcam == nil
    return 320 + (self.x - 320) * self.zoom + (320 - $xcam.x)
  end
  #--------------------------------------------------------------------------
  # ? ????? Y ?????
  #--------------------------------------------------------------------------
  alias y screen_y
  def screen_y
    return self.y if $xcam == nil
    return 240 + (self.y - 240) * self.zoom + (240 - $xcam.y)
  end
end

#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ? ?????? (?????)
  #--------------------------------------------------------------------------
  def update_xcam
    # ???????????
    if $xcam.moved?
      # ??????????????
      zoom = 185.00 / $xcam.z
      # ???????
      @battleback_sprite.zoom_x = zoom
      @battleback_sprite.zoom_y = zoom
      @battleback_sprite.x      = -($xcam.x - 320) * zoom - 512 * (zoom - 1)
      @battleback_sprite.y      = -($xcam.y - 240) * zoom - 384 * (zoom - 1)
    end
  end
end
#==============================================================================
# --- ?????????·??????? ---
#==============================================================================
module XRXS_Cam_Deal
  def update
    # ????
    super
    # ??????????????????????
    return if @battler == nil or not @battler.in_battlefield?
    # ??? Z ?????
    cam_z = $xcam == nil ? 185 : $xcam.z
    #
    # ???????
    # ( ?????????????????????? )
    #
    zoom = 1.00 * 185 / (cam_z - @battler.z)
    self.zoom_x  = zoom
    self.zoom_y  = zoom
    @battler.zoom = zoom
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_Cam_Deal
end
#==============================================================================
# --- ???????? ????? ---
#==============================================================================
module XRXS_DamageFollow
  def update
    # ????
    super
    # ???????????
    return if $xcam == nil
    # ????? nil ?????????????????
    return if @battler == nil or not @battler.in_battlefield?
    # ????????????????
    x_moved = @last_cam_x == nil ? 0 : $xcam.x - @last_cam_x
    y_moved = @last_cam_y == nil ? 0 : $xcam.y - @last_cam_y
    # ??????????????
    damage_sprites  = [@_damage_sprite]
    damage_sprites += @damage_sprites if @damage_sprites != nil
    # ????????
    for sprite in damage_sprites
      next if sprite == nil
      next if sprite.disposed?
      sprite.x -= x_moved
      sprite.y -= y_moved
    end
    # ??????????
    @last_cam_x = $xcam.x
    @last_cam_y = $xcam.y
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_DamageFollow
end
#==============================================================================
# ¦ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_main main
  def main
    # ????????
    $xcam = XCam.new
    # ??
    xrxs_bp8_main
    # ????????
    $xcam = nil
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # ????????????
    $xcam.update
    # ????
    xrxs_bp8_update
  end
end



#------------------------------------------------------------------------------
#
#
#
#    ? Full-View ???? ?
#
#
#
#==============================================================================
# ¦ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_initialize initialize
  def initialize
    # ????
    xrxs_bp8_initialize
    # ?????????????
    ga = XRXS_BP8::GA
    # ?????? 0 ???
    @viewport0 = Viewport.new(ga.x, ga.y, ga.width, ga.height)
    @viewport0.z  = 0
    # ?????? 1 ??????
    @viewport1.z += 1
    @viewport1.rect.height = 480
    # ??????????????? (?????? 0 ???)
    @battleback_sprite.dispose
    @battleback_sprite = Sprite.new(@viewport0)
    @battleback_name = ""
    # ?????????????
    update_battleback
  end
  #--------------------------------------------------------------------------
  # ? ??
  #--------------------------------------------------------------------------
  alias xrxs_bp8_dispose dispose
  def dispose
    # ????
    xrxs_bp8_dispose
    # ?????????
    @viewport0.dispose
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias xrxs_bp8_update update
  def update
    # ?????? (??????)
    update_battleback
    # ?????? (?????)
    update_xcam if defined? update_xcam
    # ????
    xrxs_bp8_update
    # ????????????
    @viewport0.ox = $game_screen.shake if @viewport0 != nil
  end
  #--------------------------------------------------------------------------
  # ? ?????? (??????)
  #--------------------------------------------------------------------------
  def update_battleback
    # ???????????????????????
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      # ?????????????
      ga = XRXS_BP8::GA
      # ????????????
      bg  = RPG::Cache.battleback(@battleback_name)
      xga  = Bitmap.new(ga.width, ga.height)
      xga.stretch_blt(xga.rect, bg, bg.rect)
      # XGA??????????
      @battleback_sprite.bitmap = xga
    end
  end
end
#==============================================================================
# ---?????"??"?????????????? ---
#==============================================================================
module XRXS_FullScreen_AnimationOffset
  def animation_set_sprites(sprites, cell_data, position)
    super
    for i in 0..15
      sprite = sprites[i]
      pattern = cell_data[i, 0]
      if sprite == nil or pattern == nil or pattern == -1
        next
      end
      if position == 3
        if self.viewport != nil
          sprite.y = 160 # ????????
        end
      end
    end
  end
end
class Sprite_Battler < RPG::Sprite
  include XRXS_FullScreen_AnimationOffset
end

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Ledai el 2015-01-14, 19:51

Oh... nuevamente gracias, ahora sí que está listo!!
No te molesto más... (por el momento XDD)
Nos leemos!

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Metalero el 2015-01-14, 21:16

Uff por fin por fin se solucionó XD.

Me alegro que te haya servido, ya hice la transferencia de creditos (gracias), y será un honor estar en los creditos de tu proyecto.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

RPG Maker XP Re: Editar Zoom batalla (El angulo pega un "salto")

Mensaje por Contenido patrocinado Hoy a las 12:41


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.