RPGツクールMV

特定キーを押している間は向き変更のみ可能にするツクールMV用プラグイン

特定キーを押している間は向き変更のみ可能にする【ツクールMV】

ローグライクなど、ターン制のゲームでよく使われる向き変更のみの操作を可能にするプラグインです。

パラメータで指定した特定のキーを押している間だけ動作します。

向き変更のみ行う向き変更のみ行う

ダウンロード

ChangeDirOnly.js
上記リンクの右クリックメニューから保存できます。

プラグインパラメータ

指定するパラメータはキーコードのみです。

キーコード

デフォルトは67(キーボードの「Cキー」)です。

他のキーに変更したい場合はキーコード一覧を見て割り当てて下さい。

コード解説

内容はいたってシンプルです。

キーマップに追加

var parameters = PluginManager.parameters('ChangeDirOnly');
var keyCode = Number(parameters["KeyCode"]);

var changeDirKeyCodeName = 'changedir';
if (Input.keyMapper[keyCode])
{
    changeDirKeyCodeName = Input.keyMapper[keyCode];
}
else
{
    Input.keyMapper[keyCode] = changeDirKeyCodeName;
}

パラメータから受け取ったキーコードを、「changedir」という名前でキーマップに追加しておきます。

既にキーコードがキーマップで使用されている場合は、そのキーマップ名をそのまま使用するようにしています。

例えばEnter、Space、Zキーは「ok」というキーマップ名で共通して利用されています。

そのためEnterキー(13)をキーコードに指定した場合は、SpaceやZを押した場合も向き変更に使用されます。

基本的には、まだ使われていないキーコードを割り当てるのが良いでしょう。

移動処理を拡張

実際の移動処理を呼び出すメソッドであるGame_Player.executeMoveを拡張します。

var _Game_Player_executeMove = Game_Player.prototype.executeMove;
Game_Player.prototype.executeMove = function(direction) {
    if (Input.isPressed(changeDirKeyCodeName)) {
        this.setDirection(direction);
    } else {
        _Game_Player_executeMove.apply(this, arguments);
    }
};

事前にキーマップに追加しておいたことで、Input.isPressedでキーが押されているかどうか取得できるようになっています。

キーが押されていたら向きを変更し、移動処理は実行しないように変更したことで向き変更のみ可能になりました!