※解決済み※【RGSS2】RPGVXで遠景を二つ表示させる方法について

Liberum
記事: 2
登録日時: 2020年5月18日(月) 01:05

※解決済み※【RGSS2】RPGVXで遠景を二つ表示させる方法について

投稿記事by Liberum » 2020年5月18日(月) 01:19

自分は遠景でマップを作りたいと思い
1つ目の遠景は従来の方法で出来る通り、キャラクターの下に表示させ
2つ目の遠景をキャラクターに重なるように表示させたいのですが、そういったやり方やスクリプトはありませんでしょうか?
RPGMVにはプラグインで可能らしいのですが、アニメーションやドット絵の流用、XP風バトルが使えないので
手を出せず、RPGVXを使い続けています。
可能な限り調べてみた結果、それらしいものがなかったので
やはりRPGVXでやるのは厳しいでしょうか?
最後に編集したユーザー Liberum on 2020年5月18日(月) 16:16 [ 編集 1 回目 ]

ぽんぽこねるそん
記事: 53
登録日時: 2018年10月26日(金) 12:24

Re: 【RGSS2】RPGVXで遠景を二つ表示させる方法について

投稿記事by ぽんぽこねるそん » 2020年5月18日(月) 13:29

遠景と同じものをもう一つ作ってそれを手前に表示するようにして
必要なら遠景とそれの視差を0にすればいいかと思います。

すごいやっつけですけどこんな感じです。

コード: 全て選択

module CLOSE_VIEW_SETTING
=begin
  マップの近景の設定
  CLOSE_VIEW_NAMES[マップID] = 近景画像名
  の形で設定してください
  近景の画像はGraphics/Parallaxesに入れてください
  手抜き仕様なのでループとか自動スクロールは遠景と同じになります
=end
  CLOSE_VIEW_NAMES = {}#消さない!
  CLOSE_VIEW_NAMES[3] = "BlueSky"

=begin
  近景のZ座標の設定
=end
  CLOSE_VIEW_Z = 201
=begin
  遠景/近景を視差0にするマップの設定
  ZERO_MAPに遠景/近景を視差0にしたいマップIDを追加してください
=end
  ZERO_MAP = []#消さない!
  ZERO_MAP << 3
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================

class Game_Map
  include CLOSE_VIEW_SETTING
  attr_accessor   :close_view_name
  #--------------------------------------------------------------------------
  # ● 遠景のセットアップ
  #--------------------------------------------------------------------------
  alias close_view_setup_parallax setup_parallax
  def setup_parallax
    close_view_setup_parallax
    @close_view_name = CLOSE_VIEW_NAMES[@map_id] || ""
  end
  #--------------------------------------------------------------------------
  # ● 遠景表示 X 座標の計算
  #     bitmap : 遠景ビットマップ
  #--------------------------------------------------------------------------
  alias zero_calc_parallax_x calc_parallax_x
  def calc_parallax_x(bitmap)
    return @display_x / 8 if parallax_zero_map?
    zero_calc_parallax_x(bitmap)
  end
  #--------------------------------------------------------------------------
  # ● 遠景表示 Y 座標の計算
  #     bitmap : 遠景ビットマップ
  #--------------------------------------------------------------------------
  alias zero_calc_parallax_y calc_parallax_y
  def calc_parallax_y(bitmap)
    return @display_y / 8 if parallax_zero_map?
    zero_calc_parallax_y(bitmap)
  end
  #--------------------------------------------------------------------------
  # ● 遠景/近景の視差0のマップか
  #--------------------------------------------------------------------------
  def parallax_zero_map?
    ZERO_MAP.include?(@map_id)
  end
end
#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
#  マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
# Scene_Map クラスの内部で使用されます。
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 遠景の作成
  #--------------------------------------------------------------------------
  alias close_view_create_parallax create_parallax
  def create_parallax
    close_view_create_parallax
    @close_view = Plane.new(@viewport1)
    @close_view.z = CLOSE_VIEW_SETTING::CLOSE_VIEW_Z
  end
  #--------------------------------------------------------------------------
  # ● 遠景の解放
  #--------------------------------------------------------------------------
  alias close_view_dispose_parallax dispose_parallax
  def dispose_parallax
    close_view_dispose_parallax
    @close_view.dispose
  end
  #--------------------------------------------------------------------------
  # ● 遠景の更新
  #--------------------------------------------------------------------------
  alias close_view_update_parallax update_parallax
  def update_parallax
    close_view_update_parallax
    update_close_view
  end
  #--------------------------------------------------------------------------
  # ● 近景の更新
  #--------------------------------------------------------------------------
  def update_close_view
    if @close_view_name != $game_map.close_view_name
      @close_view_name = $game_map.close_view_name
      if @close_view.bitmap != nil
        @close_view.bitmap.dispose
        @close_view.bitmap = nil
      end
      if @close_view_name != ""
        @close_view.bitmap = Cache.parallax(@close_view_name)
      end
      Graphics.frame_reset
    end
    @close_view.ox = $game_map.calc_parallax_x(@close_view.bitmap)
    @close_view.oy = $game_map.calc_parallax_y(@close_view.bitmap)
  end
end
Liberum
記事: 2
登録日時: 2020年5月18日(月) 01:05

Re: 【RGSS2】RPGVXで遠景を二つ表示させる方法について

投稿記事by Liberum » 2020年5月18日(月) 16:15

ありがとうございます!まさに理想の形に出来ることが出来ました!

“VX / Ace:質問” へ戻る