LNS040 マップ,キャラ拡張

マップとキャラクターの挙動にいろいろな機能を追加します。





基本情報

前提スクリプト


挿入位置



説明

概要

 マップ上でのキャラクターの動作についての基礎的な拡張スクリプトです。

◆斜め移動

  • プレイヤーの移動時、方向キーの縦と横を同時に押すと斜めに移動します。
  • 斜め移動の際、水場の上に斜めに陸地が渡されていた場合(下図)は直接移動できるようになります。
  • 「水場」と「陸地」の判定について、RTPのタイルセットに対してはこのスクリプト上で定義してありますが、オリジナルのタイルセットを使う場合、一定の様式に従って設定する必要があります。
  • 斜め移動できない状態(壁に隣接しているなど)で斜め入力を行うと、移動できる方向への「すべり」が発生します。
    • [移動ルートの設定] での斜め移動の場合すべりは起こりません。

◆イベント起動

  • 段差を隔てて隣接しているイベント(下図)は、2次元的に隣接していても起動できなくなります。
    • はしごを利用して天井に登れるようなダンジョンの場合に有効です。
    • 起動しようとするイベントが壁や水場など通行不可能な場所にある場合は、段差の有無に関係なく通常通り起動できます。
  • カウンター属性を持つタイルを隔ててイベントを起動するとき、標準では1マスの厚みのときだけ起動できましたが、このスクリプトでは2マスの場合も起動できるようになります。

◆床一枚絵

  • マップのメモに
<mapfloor:ファイル名>
 と書いておくと、タイルマップのすぐ下(遠景よりも上)に指定された名前の画像を表示します。
  • この画像はマップのスクロールに同期して表示されます。マップの床を一枚絵で表現したい場合に使えます。
  • 画像は Graphics/Parallax に置きますが、FloorPath にて変更可能です。
  • ファイル名の後ろに ",255" などカンマと数字を書いておくと、床の不透明度をその値に指定することができます。

◆天井一枚絵

  • マップのメモに
<maproof:ファイル名>
 と書いておくと、マップの最上層に指定された名前の画像を表示します。
  • キャラの上にある物(木々の影など)を一枚絵で表現したい場合に使えます。
  • 画像は Graphics/Parallax に置きますが、RoofPath にて変更可能です。
  • ファイル名の後ろに ",255" などカンマと数字を書いておくと、床の不透明度をその値に指定することができます。

◆前景

  • マップのメモに
<foreground:ファイル名>
 と書いておくと、マップ最上層(天井よりも上)に前景画像を表示します。
  • RPGツクールXPにおけるフォグ(雲や霧)を表現したい場合のに使えます。
  • マップのスクロールと完全には同期せず、遠景と似たような形で表示されます。
  • 画像は Graphics/Parallax に置きますが、ForegroundPath にて変更可能です。
  • メモ内に sx:** や sy:** と書いておくと、遠景のスクロールと同様のスクロール表示を行えます。以下の記入例を見てください。
<foreground:aaa,sx:0>        #=> 画像ファイル"aaa"を前景に指定。横方向にループ。
<foreground:aaa,sx:8,sy:-2>  #=> 横方向に速度8で自動スクロール。縦方向に速度-2で自動スクロール。
<foreground:aaa, sy:0, sx:8> #=> 横方向に速度8で自動スクロール。縦方向にループ(自動スクロールなし)。
  • スクロール速度の値は遠景の自動ループと同じ仕様です。

◆経路探索

  • A*双方向探索により、現在位置から指定座標までの最短ルートを検索して歩かせることができます。
  • あるキャラクター(char)に座標(10, 5)までの最短ルートを歩かせる場合、イベントコマンド [スクリプト] で char.walk_to(10, 5) と書きます。
    • 通行できない場所(壁など)を目的地に設定した場合ルートは探索されません。
    • 目的地は通行可能なものの、間に壁があるなどで到達不可能な場合、いったん全てのルートを検索したうえで到達不可能な判定を下すため、時間がかかかる場合があります。
    • 到達不可能な場合の探索時間を短縮したい場合、char.walk_to(10, 5, 30) などと3番目の引数に上限歩数(マス数)を指定してください。
  • LNS005a マウス操作を導入している場合、マップ上の点をクリックした際に、その地点まで最短ルートで移動するようになります。

◆タイルフラッシュ

  • スクリプトで $game_map.flash(x, y, color) と書くと、座標(x, y)のマスを color に応じた色でフラッシュします。
  • color はRGBの各色を4ビットで表します。例えば 0xf00 とすると RGB(255, 0, 0) でフラッシュします。
  • フラッシュを終了する場合は、color に 0 を指定してください。


備考

再定義されるメソッド

  • Game_Character#set_direction
  • Game_Character#move_straight
  • Game_Character#passable?
方向に斜め(1,3,7,9)が渡された場合の挙動が追加されます。
  • Game_Character#diagonal_passable?
斜め移動時の挙動が自然になるように通行判定を変更されます。

  • Game_Player.move_by_input
斜め入力に対応します。
  • Game_Player.check_event_trigger_there
カウンタータイルが2つ以上隣接している場合にも対応できるように変更されます。
  • Game_Player.normal_walk?
  • Game_Player.update_encounter
マウスによる移動ルートの強制時も通常歩行と判定されるように変更されます。
  • Game_Player.check_event_trigger_touch
  • Game_Event.check_event_trigger_touch
段差を隔てている場合は起動できないように変更されます。

上記のメソッドを拡張するスクリプトはこれよりも後ろに入れてください。

設定項目

ForegroundPath<初期値:"Graphics/Parallaxes/">
前景画像ファイルを置く場所
FloorPath<初期値:"Graphics/Parallaxes/">
床画像ファイルを置く場所
RoofPath<初期値:"Graphics/Parallaxes/">
天井画像ファイルを置く場所
Map_AnyFlag<初期値:false>
詳細はLNS041 詳細移動を参照してください。
TilesetPriority
各タイルの上下関係を決めるための数値を格納したハッシュ。このスクリプトではRTPタイルセットについて定義してある。
TilesetPriority[ファイル名][タイルID] = プライオリティ
    ・ファイル名
      - 直接文字列で指定 ("Outside_A5" など)
    ・タイルID
      - 0-255 の相対値
      - オートタイルは以下の固定値
          A1 :  0-15
          A2 : 16-47
          A3 : 48-79
          A4 : 80-127
    ・プライオリティ
      - 0 : A1 タイルの水部分 など、斜め移動の可否に関与しないタイル
      - 1 : 下層タイル(通行はできないが乗り出すことはできる)
      - 2 : 上層タイル(乗り出せない) (デフォルト値)
      - 3 : 天井
      - オートタイルは A1 = 0、A3/A4 = 3、それ以外は 2 として扱われる


更新履歴

  • 2019/10/19 マップ上に一枚絵を表示する機能を追加


コメント:

すべてのコメントを見る
最終更新:2019年10月19日 17:23