ツクールMVの条件分岐で地形タグを調べる方法

samne_xyid
 
例えば主人公が砂漠に立っている時だけ足が遅くなるとか、
特定のリージョンではHPが5秒単位で回復するとか、
そういう地形・タイル単位で何かイベントを起こしたいなと思ったので、
調べてみました。
 
いちいちイベントコマンドで打ってもいいんですけど、
面倒くさいじゃないですか!
 
・・・というわけで、条件分岐コマンドのスクリプト入力を使います。
 

予備知識

地形タグは
$gameMap.terrainTag(X座標,Y座標)
イベントIDは
$gameMap.eventIdXy(X座標,Y座標)
リージョンIDは
$gameMap.regionId(X座標,Y座標)
で取得できます。
 
主人公の座標は
this.character(-1).x
this.character(-1).y

マップイベントの座標は
this.character(イベントID).x
this.character(イベントID).y

で取得できます。
 
変数の値の取得は
$gameVariables.value(変数番号)
スイッチの値(true/false)の取得は
$gameSwitches.value(スイッチ番号)
で取得できます。
 
その他取得できる項目に関しては、
村人Aさんのブログ「RPG作る人のブログ」
ツクールMVスクリプトのテーマ記事
記事「ツクールMVのスクリプトでゲームデータを取得する方法」
を参考にするといいと思います。
 

主人公の現在位置の地形タグが 5番 か確認する

条件分岐のスクリプト入力欄に
$gameMap.terrainTag(this.character(-1).x, this.character(-1).y)==5
と入力すればOKです。

座標(0,0)にイベントが存在するか確認する

条件分岐のスクリプト入力欄に
$gameMap.eventIdXy(0,0)>0
と入力すればOKです。
主人公などの存在も認識させたいなら
$gameMap.eventIdXy(0,0)!=0
と入力すればOKです。

座標(変数1の値,変数2の値)のリージョンIDが
変数3と異なる値かどうか確認する

条件分岐のスクリプト入力欄に
$gameMap.regionId($gameVariables.value(1),$gameVariables.value(2))!=$gameVariables.value(3)
と入力すればOKです。
 
 
とまあ、こんな感じです。
応用すれば、地形ごとに音が変わる足音システムとかも作れるかも?
 

ツクールMVの条件分岐で地形タグを調べる方法” へのコメントが 5 点あります

  1. 「座標(変数1の値,変数2の値)のリージョンIDが
    変数3と異なる値かどうか確認する」

    $gameMap.regionId($gameVariables.value(1),$gameVariables.value(2))!=$gameVariables.value(3)

    コレは変数のIDをどこにいれればいいんでしょうか?
    それか変数の名前なのか・・・

    突然失礼しました。無知ですいません^^

    • $gameMap.regionId(
      $gameVariables.value([ここに調べたいX座標が格納された変数のID]),
      $gameVariables.value([ここに調べたいY座標が格納された変数のID]))
      !=
      $gameVariables.value([ここに比較したいリージョンIDが格納された変数のID])
      という形です。
      !=というのは比較演算子と言って、変数同士を比較するのに使う記号で、
      [変数A] != [変数B] とした場合、「変数Aと変数Bが異なる場合」
      という意味です。
      その他の演算子についてはコチラを参照するとよいかと
      比較演算子 – JavaScript | MDN
      また分からない事がありましたら、是非気軽にお聞きください。

  2. 失礼します。

    「イベントID:006の現在位置のリージョンIDが1か確認する」
    というイベントを作るため、
    当サイトを参考にして以下の内容を
    条件分岐のスクリプト欄に入力したのですが、何も起こりません。

    $gameMap.regionId(this.character(6).x, this.character(6).y)==1

    どこかが間違っているのでしょうが、初心者の私にはどうしても分かりません。
    もし時間があるのでしたら、正しい文章を教えてくれたら嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*