【解決済】プレイヤーを通常操作で移動させる際、移動先のマスへ瞬時に移動させる方法

しーま
記事: 2
登録日時: 2021年8月28日(土) 00:25

【解決済】プレイヤーを通常操作で移動させる際、移動先のマスへ瞬時に移動させる方法

投稿記事by しーま » 2021年8月28日(土) 00:34

はじめまして。
下記のようなことが行えないか悩んでいます。

◎やりたいこと
プレイヤーが通常操作で移動する際、移動先へ瞬間移動させたい
(→移動先のマスにキャラが滑らかに移動するのではなく、瞬間的にパッと移動先のマスへ移動する。
  Ultima1など、昔のPCのRPGみたいな動作)
※プレイヤーの動きのみが変わればOKです(NPCの移動については考慮しない)

◎考えたこと
プレイヤー(アクター)の移動速度を最大にした上で、
プレイヤーを移動させるスクリプト上の処理のところにウェイトを挟めば
擬似的に再現できるのかなと考えました。
しかし対象の「プレイヤーを移動させるスクリプト上の処理」を見つけられずにいます。

・上記「プレイヤーを移動させるスクリプト上の処理」
・もしくは、このやりたいことを実現するためのより効率的な手段
・または実現できるプラグイン
をご存知でしたら教えていただけないでしょうか?

よろしくお願いいたします。
最後に編集したユーザー しーま on 2021年8月28日(土) 20:53 [ 編集 1 回目 ]

名無し蛙
記事: 310
登録日時: 2015年11月23日(月) 02:46

Re: プレイヤーを通常操作で移動させる際、移動先のマスへ瞬時に移動させる方法

投稿記事by 名無し蛙 » 2021年8月28日(土) 12:27

どうもこんにちは。
ツクールのキャラクタでは論理座標と実座標という二つの座標情報を使い分けています。
ゲームシステムには論理座標を基準に、論理座標の移動補完を実座標に任せている感じですね。
本来スクリーン座標を割り出す為に実座標を渡す箇所を論理座標に差し替えれば希望の動作になる気がしますね。

コード: 全て選択

/*:ja
 * @target MZ
 */
(() => {
    "use strict"
    Game_Player.prototype.scrolledX = function() {
        return $gameMap.adjustX(this._x);
    };
    Game_Player.prototype.scrolledY = function() {
        return $gameMap.adjustY(this._y);
    };
})();
biv36htspH7k5cC
記事: 35
登録日時: 2020年2月17日(月) 20:21

Re: プレイヤーを通常操作で移動させる際、移動先のマスへ瞬時に移動させる方法

投稿記事by biv36htspH7k5cC » 2021年8月28日(土) 12:27

しーま さんが書きました:はじめまして。
下記のようなことが行えないか悩んでいます。

◎やりたいこと
プレイヤーが通常操作で移動する際、移動先へ瞬間移動させたい
(→移動先のマスにキャラが滑らかに移動するのではなく、瞬間的にパッと移動先のマスへ移動する。
  Ultima1など、昔のPCのRPGみたいな動作)
※プレイヤーの動きのみが変わればOKです(NPCの移動については考慮しない)

◎考えたこと
プレイヤー(アクター)の移動速度を最大にした上で、
プレイヤーを移動させるスクリプト上の処理のところにウェイトを挟めば
擬似的に再現できるのかなと考えました。
しかし対象の「プレイヤーを移動させるスクリプト上の処理」を見つけられずにいます。

・上記「プレイヤーを移動させるスクリプト上の処理」
・もしくは、このやりたいことを実現するためのより効率的な手段
・または実現できるプラグイン
をご存知でしたら教えていただけないでしょうか?

よろしくお願いいたします。


同じマップ内でしたら、下記のようなスクリプトで可能です。
キャラクターIDを-1にすると、プレイヤーキャラになります。

http://rpgmaker-script-wiki.xyz/eventposition_mv.php
character = this.character(キャラクターID)
character.locate(X座標, Y座標)
character.setDirection(方向)
しーま
記事: 2
登録日時: 2021年8月28日(土) 00:25

Re: プレイヤーを通常操作で移動させる際、移動先のマスへ瞬時に移動させる方法

投稿記事by しーま » 2021年8月28日(土) 20:51

名無し蛙さん

ご回答ありがとうございます。
上記に記載いただいたコードをプラグイン化して自プロジェクトへ取り込んだところ、
期待していた動作が実現できました。

論理座標と実座標という2種類の要素があるんですね。。
こういったシンプルな解決策があるとは思いませんでした。
勉強になりました。ありがとうございました!


biv36htspH7k5cCさん

ご回答ありがとうございます。
こちらに記載いただいたやり方でも、キャラクターの瞬間移動自体は行えることを確認しました。

今回はプレイヤーの上下左右キーでの通常移動(イベントでのキャラ移動ではなく)にて
瞬間移動を行えるようにしたかったため、
こちらのやり方はイベントで瞬間移動を行わせたいときに活用させていただきます!


お二方ともありがとうございました!

“MZ:質問” へ戻る