久しぶりの記事となります。
タイトルのとおり、RPGツクールMVのゲーム制作で JavaScriptを用いて画面やミニゲーム等、 色んな機能を作る時に利用しているソースコードを備忘録として記述します。
- 前提
- 操作対象
- マップ上のイベントを取得する
- マップ上のキャラクターを取得し、拡大率を変更する
- 主人公の情報を取得する
- キャラクターにアニメーションを表示する
- キャラクターにフキダシを表示する
- キャラクターの位置(スクリーン上の座標)を取得する
- キャラクターの移動タイプを変更する
前提
- ゲーム起動中に、F8で表示されるDeveloper Toolの「Console」を利用
操作対象
- イベントの座標
- X:10
- Y:9
- イベントのID
- 10
マップ上のイベントを取得する
- ソースコード
$gameMap.eventsXy(x, y)
グローバル変数「$gameMap」には現在主人公が存在するマップ情報が 設定されています。
各イベント情報を取得し、 キャラクターグラフィックの変更や向きの変更、その他諸々が確認できます。
利用例
- キャラクターを時計回りに90度回転させる。
$gameMap.eventsXy(10,9)[0].turnRight90()
- 実行前
- 実行後
マップ上のキャラクターを取得し、拡大率を変更する
- ソースコード
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
- 実行前
- 実行後
無駄にでかい
主人公の情報を取得する
- ソースコード
$gamePlayer
利用例
- 主人公のキャラクターグラフィックを変更する
$gamePlayer._characterName = "Actor1"
- 実行前
- 実行後
キャラクターにアニメーションを表示する
$gamePlayer._animationId = animationId
利用例
// 20: 爪/雷 $gamePlayer._animationId = 20 $gameMap.eventsXy(10,9)[0]._animationId = 20
- 実行イメージ
キャラクターにフキダシを表示する
吹き出しを出すキャラクターを動的に変える場合に重宝します。
- ソースコード
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();
- 実行イメージ
キャラクターの位置(スクリーン上の座標)を取得する
$gamePlayer.screenX() $gamePlayer.screenY()
キャラクターの移動タイプを変更する
- ソースコード
$gameMap.eventsXy(x,y)[ID-1]._moveType = moveTypeCd
利用例
$gameMap.eventsXy(10,9)[0]._moveType = 2 // 主人公に近寄る
- 実行イメージ
色々なものがついてきてしまっていますね。 これもフキダシと同様、動的にキャラクターの移動タイプを変更したい時に重宝します。
他にも思い出した時に記述しようと思います。