気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【ツクールMV】ゲームの機能作成時によく利用するソースコード(備忘録)

久しぶりの記事となります。

タイトルのとおり、RPGツクールMVのゲーム制作で JavaScriptを用いて画面やミニゲーム等、 色んな機能を作る時に利用しているソースコードを備忘録として記述します。

前提

  • ゲーム起動中に、F8で表示されるDeveloper Toolの「Console」を利用

操作対象

f:id:rinne_grid2_1:20170604231135p:plain

  • イベントの座標
    • X:10
    • Y:9
  • イベントのID
    • 10

マップ上のイベントを取得する

$gameMap.eventsXy(x, y)

グローバル変数「$gameMap」には現在主人公が存在するマップ情報が 設定されています。

各イベント情報を取得し、 キャラクターグラフィックの変更や向きの変更、その他諸々が確認できます。

利用例

  • キャラクターを時計回りに90度回転させる。
$gameMap.eventsXy(10,9)[0].turnRight90()
  • 実行前

f:id:rinne_grid2_1:20170604231151p:plain

  • 実行後

f:id:rinne_grid2_1:20170604231210p:plain

マップ上のキャラクターを取得し、拡大率を変更する

SceneManager._scene._spriteset._characterSprites[id-1].scale.x = 3.0;
SceneManager._scene._spriteset._characterSprites[id-1].scale.y = 3.0;

(アンダースコア_がついたプロパティは暗黙的にプライベートなものを示すはずなので 外部から変更するものじゃありませんが…Consoleからの実行で、デバッグ的な意味合いが強いのでここでは良しとします。)

SceneManager._sceneには、現在のシーン情報が格納されています。 マップ上にいれば、Scene_Map、 メニューを開いていれば、Scene_Menu、 さらにアイテムメニューを開けばScene_Itemとなっています。

そのシーンで利用されているスプライト(タイルやキャラクターの表示情報)は、 SceneManager._scene._spritesetにまとめられています。

さらにオブジェクトをたどると… SceneManager._scene._spriteset._characterSpritesには、 該当シーンに存在するキャラクターに関係するスプライト情報が 配列として管理されています。 この配列に対し、イベントID - 1した値を添え字として参照すれば 操作したいキャラクターを取得することができるのです。 (あくまでもデバッグ目的で)

利用例

SceneManager._scene._spriteset._characterSprites[10-1].scale.x = 3.0
SceneManager._scene._spriteset._characterSprites[10-1].scale.y = 3.0
  • 実行前

f:id:rinne_grid2_1:20170604231244p:plain

  • 実行後

f:id:rinne_grid2_1:20170604231453p:plain

無駄にでかい

主人公の情報を取得する

$gamePlayer

利用例

  • 主人公のキャラクターグラフィックを変更する
$gamePlayer._characterName = "Actor1"
  • 実行前

f:id:rinne_grid2_1:20170604231916p:plain

  • 実行後

f:id:rinne_grid2_1:20170604232020p:plain

キャラクターにアニメーションを表示する

$gamePlayer._animationId = animationId

利用例

// 20: 爪/雷
$gamePlayer._animationId = 20
$gameMap.eventsXy(10,9)[0]._animationId = 20
  • 実行イメージ

f:id:rinne_grid2_1:20170604234304p:plain

キャラクターにフキダシを表示する

吹き出しを出すキャラクターを動的に変える場合に重宝します。

var itpr = new Game_Interpreter();
itpr._params = [eventId, balloonId, waitTrue];
itpr._mapId = $gameMap.mapId();
itpr.command213();

利用例

var itpr = new Game_Interpreter();
itpr._params = [10, 4, true]; // イベントID(10), 吹き出しの種類(ハート:4), 終了まで待つか(true:待つ)
itpr._mapId = $gameMap.mapId();
itpr.command213();
  • 実行イメージ

f:id:rinne_grid2_1:20170604233640p:plain

キャラクターの位置(スクリーン上の座標)を取得する

$gamePlayer.screenX()
$gamePlayer.screenY()

キャラクターの移動タイプを変更する

$gameMap.eventsXy(x,y)[ID-1]._moveType = moveTypeCd

利用例

$gameMap.eventsXy(10,9)[0]._moveType = 2 // 主人公に近寄る
  • 実行イメージ

f:id:rinne_grid2_1:20170605000637p:plain

色々なものがついてきてしまっていますね。 これもフキダシと同様、動的にキャラクターの移動タイプを変更したい時に重宝します。

他にも思い出した時に記述しようと思います。