ドット移動システム

移動方式をマス移動からドット移動に変更するプラグインです。フォロワー表示やルームマップにも対応しています。
現時点ではプレイヤーのドット移動のみ可能であり、イベントのドット移動を制御することはできません。
また、イベントの衝突範囲の設定なども未対応です。これらの機能はアップデートで追加していきたいと思います。

【ダウンロード】
以下のリンクからダウンロード可能です。
ドット移動システム(RPG開発研究所)

ホームページが当分復旧できそうにないので代わりに以下のリンクからダウンロードしてください。

 
最後に編集:
v1.3.0に更新しました。
・タッチ移動を制御するためのプラグインパラメータを追加

あと書き忘れていたけどv1.2.0の更新内容です。
・イベントの移動単位を設定する機能を追加
・イベントを任意の方向にドット移動させる機能を追加
・通路で斜め移動したときに状況次第で表示がガタガタになる不具合を修正
・立体交差プラグインとの併用に対応
 
v1.7.0に更新しました。
・斜め同時の壁回りの挙動を修正
・イベントサイズを1未満にしたときに壁にめり込む不具合を修正
・イベントサイズが途中で変更された場合に当たり判定が正しくできなくなる不具合を修正
・ループマップで不正な位置で乗り物に乗れる不具合を修正
・経路探索時にイベントサイズを考慮されるように修正
・イベントサイズによってイベント起動位置がずれる不具合を修正
 
ドット移動システム機能拡張プラグインを公開しました。
このプラグインを導入することで次の機能が追加されます。
・プレイヤーサイズの変更
・移動速度の調整
・加速度の追加
・慣性の追加
・イベントを押す
・イベントめり込み時の挙動の変更
・当たり判定付きジャンプ

【ダウンロード】
 

MoonAcre

ユーザー
待ってました!導入させて頂きました。
しかし、MVではドット移動システム機能拡張プラグインが機能しないようです…。
具体的には、イベントに
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇スクリプト:this.setMoveUnit(0.5);
:        :◇スクリプト:this.setDpf(6);
:        :◇スクリプト:this.setAcc(20, 3);
:        :◇スクリプト:this.setInertia(2);
◆ウェイト:60フレーム
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇ランダムに移動:
        :◇ランダムに移動:
        :◇ランダムに移動
◆ウェイト:60フレーム
のような感じでテストしてみました。
結果、イベントはキョロキョロと進行方向を向くだけで、その場から動きませんでした。

また
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇スクリプト:this.dotMoveToPlayer();
では、イベントがプレイヤーのそばにチラつくように現れるという現象になりました。
 
待ってました!導入させて頂きました。
しかし、MVではドット移動システム機能拡張プラグインが機能しないようです…。
具体的には、イベントに
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇スクリプト:this.setMoveUnit(0.5);
:        :◇スクリプト:this.setDpf(6);
:        :◇スクリプト:this.setAcc(20, 3);
:        :◇スクリプト:this.setInertia(2);
◆ウェイト:60フレーム
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇ランダムに移動:
        :◇ランダムに移動:
        :◇ランダムに移動
◆ウェイト:60フレーム
のような感じでテストしてみました。
結果、イベントはキョロキョロと進行方向を向くだけで、その場から動きませんでした。

また
◆移動ルートの設定:このイベント (飛ばす, ウェイト)
:        :◇スクリプト:this.dotMoveToPlayer();
では、イベントがプレイヤーのそばにチラつくように現れるという現象になりました。
おそらく移動頻度の問題だと思うので、移動頻度を最高にして試してみてください。
加速や慣性の挙動はキャラクターが常に移動し続けることを前提としているため、移動頻度が最高でない場合には不自然な挙動になると考えられます。
 
すみません。変わらずでした…。こちらの環境の問題なのかなぁ…。
this.setDpf(6); を this.setDpf(0.001) ; ぐらいに変えて試してください。多分これで動くと思います。(そういえばdpfの説明をヘルプに書くの忘れてましたね。。。)
元々ドット移動は入れるだけで動作するのでサンプルプロジェクトは用意していなかったのですが、拡張プラグインを入れるといろいろとややこしいところもあるので、近いうちにサンプルプロジェクトを用意する予定です。
 

しめさば

ユーザー
バグ?報告です。
ツクールMVにてイベントの移動ルートで
this.moveStraight(this.findDirectionTo(x座標,y座標))を行うと斜め移動時に歩行グラが正しく表示されなくなります。
(上下左右時は正しく表示されます)

お手すきの際ご対応いただけますと幸いです。
宜しくお願い致します。
 

Attachments

  • 無題.png
    無題.png
    40.9 KB · 閲覧: 23
バグ?報告です。
ツクールMVにてイベントの移動ルートで
this.moveStraight(this.findDirectionTo(x座標,y座標))を行うと斜め移動時に歩行グラが正しく表示されなくなります。
(上下左右時は正しく表示されます)

お手すきの際ご対応いただけますと幸いです。
宜しくお願い致します。
こちらは仕様になります。ツクールのコアスクリプトではmoveStraightは上下左右の移動用のメソッドとして定義されているみたいで、moveDiagonallyが斜め移動用のメソッドとして定義されているみたいなのでドット移動プラグインはそれに合わせています。

なお、ドット移動プラグイン独自のメソッドで8方向に移動できる「moveByDirection」というものを定義しているため、これを下記のように使用すればいい感じにできると思います。
this.moveByDirection(this.findDirectionTo(x座標,y座標))

ただ、プラグイン更新の際に使用法の変更及びセーブデータの互換性に影響が出る場合はヘルプに記載していますが、内部で使用しているメソッドの変更などは通知なしに行われる場合があるのでそこだけ注意していただきたいと思います。とはいうものの上記のメソッドが変更になる可能性はほぼないと思います。
 

しめさば

ユーザー
こちらは仕様になります。ツクールのコアスクリプトではmoveStraightは上下左右の移動用のメソッドとして定義されているみたいで、moveDiagonallyが斜め移動用のメソッドとして定義されているみたいなのでドット移動プラグインはそれに合わせています。

なお、ドット移動プラグイン独自のメソッドで8方向に移動できる「moveByDirection」というものを定義しているため、これを下記のように使用すればいい感じにできると思います。
this.moveByDirection(this.findDirectionTo(x座標,y座標))

ただ、プラグイン更新の際に使用法の変更及びセーブデータの互換性に影響が出る場合はヘルプに記載していますが、内部で使用しているメソッドの変更などは通知なしに行われる場合があるのでそこだけ注意していただきたいと思います。とはいうものの上記のメソッドが変更になる可能性はほぼないと思います。
お教えいただきありがとうございます。無事問題が解決いたしました。
 

希杖しほな

ユーザー
こんにちは。
こちらのプラグインを使ってみましたが、とても素晴らしくて、
うなぎおおとろさまには頭が上がりません。



ただ、自分の作品を作ろうとしたときに感じた、
個人的に欲しいと思う要望を書いてみることにしました。

自分でプラグインを覗いてみても、よく理解できず、
こういう形でしか改善できそうにないのです、すみません。


要望①
クリック時やシーン切り替え時、移動先の基準がセルの左上の基準になっていますが、これにオフセットを設ける。
 〇理由
  添付したsetsumei1と一緒に説明させてください。
  ▽ピンクがキャラクターが乗っているセルを表しています。
  ▽青色のPがプレイヤーもしくはイベントのスプライトを表しています。
  ▽緑がコリジョンを表しています。
   ①がコリジョンのサイズもオフセットも変更なし。
   ②そこからサイズをスプライトに合わせて変更。
   ③オフセットでスプライトにコリジョンを合わせる。
   ④するとコリジョンの左上が基準になり、キャラクターがセルの真ん中からずれてしまいます。
  
  □サイズとオフセットによりプレイヤーの操作感は最高です!!
   ただ配置されるイベントの位置もマウス操作時の移動先も、スプライトに合わすと、左上よりになります。
   ④でなく③のままの使いたいので基準点のオフセット機能が欲しいです。

要望②
 イベントの一括設定機能。
 〇理由
  イベントもフォロワーのように一括してサイズやオフセット変更できた方が楽だからです。
  というのも村人などは大半が同じ規格のスプライトを使い、数も多いで疲れます。
  スプライトの規格ごとに簡単に設定できるのが個人的には理想です。

要望③
 クリック移動時、目的地に直線的に移動できるようにする。
 〇理由
  後ろにフォロワーは滑らかについてきますが、プレイヤーだけカクカク動くので不思議に思っただけです。
  気にならない人には関係ないかもしれません。


以上、自分ではどうしようもなかったことを要望としてこちらに書かせていただきました。
ちなみにMVで使わせていただきました。

最後にまたいいますが、最高のプラグインです!!
 

Attachments

  • setsumei1.png
    setsumei1.png
    742 bytes · 閲覧: 9
こんにちは。
こちらのプラグインを使ってみましたが、とても素晴らしくて、
うなぎおおとろさまには頭が上がりません。



ただ、自分の作品を作ろうとしたときに感じた、
個人的に欲しいと思う要望を書いてみることにしました。

自分でプラグインを覗いてみても、よく理解できず、
こういう形でしか改善できそうにないのです、すみません。


要望①
クリック時やシーン切り替え時、移動先の基準がセルの左上の基準になっていますが、これにオフセットを設ける。
 〇理由
  添付したsetsumei1と一緒に説明させてください。
  ▽ピンクがキャラクターが乗っているセルを表しています。
  ▽青色のPがプレイヤーもしくはイベントのスプライトを表しています。
  ▽緑がコリジョンを表しています。
   ①がコリジョンのサイズもオフセットも変更なし。
   ②そこからサイズをスプライトに合わせて変更。
   ③オフセットでスプライトにコリジョンを合わせる。
   ④するとコリジョンの左上が基準になり、キャラクターがセルの真ん中からずれてしまいます。
  
  □サイズとオフセットによりプレイヤーの操作感は最高です!!
   ただ配置されるイベントの位置もマウス操作時の移動先も、スプライトに合わすと、左上よりになります。
   ④でなく③のままの使いたいので基準点のオフセット機能が欲しいです。

要望②
 イベントの一括設定機能。
 〇理由
  イベントもフォロワーのように一括してサイズやオフセット変更できた方が楽だからです。
  というのも村人などは大半が同じ規格のスプライトを使い、数も多いで疲れます。
  スプライトの規格ごとに簡単に設定できるのが個人的には理想です。

要望③
 クリック移動時、目的地に直線的に移動できるようにする。
 〇理由
  後ろにフォロワーは滑らかについてきますが、プレイヤーだけカクカク動くので不思議に思っただけです。
  気にならない人には関係ないかもしれません。


以上、自分ではどうしようもなかったことを要望としてこちらに書かせていただきました。
ちなみにMVで使わせていただきました。

最後にまたいいますが、最高のプラグインです!!
①②については昔から考えてたんですけど、仕様が決まらなくてなかなか手付かずになってますね。。。
③についてはバグでしたので、v1.7.5にて修正しました。
 

しめさば

ユーザー
お世話になっております。
何度も申し訳ありません。

一点要望がございまして
ドット単位でイベントを別イベントの方向に移動させる機能を追加いただけますと大変嬉しいです。
※this.turnTowardCharacter($gameMap.event(イベントID))のドット単位移動版

ご検討の程宜しくお願い致します。
 
お世話になっております。
何度も申し訳ありません。

一点要望がございまして
ドット単位でイベントを別イベントの方向に移動させる機能を追加いただけますと大変嬉しいです。
※this.turnTowardCharacter($gameMap.event(イベントID))のドット単位移動版

ご検討の程宜しくお願い致します。
こちらはGame_CharacterBase#calcDeg(targetCharacter)を使用してターゲットとなるイベントへの角度を取得することで対応できます。
例えば
this.dotMoveByDeg(this.calcDeg($gameMap.event(イベントID)));
みたいにすることで、イベントの方向に対してドット単位で移動させることが可能です。
 

しめさば

ユーザー
こちらはGame_CharacterBase#calcDeg(targetCharacter)を使用してターゲットとなるイベントへの角度を取得することで対応できます。
例えば
this.dotMoveByDeg(this.calcDeg($gameMap.event(イベントID)));
みたいにすることで、イベントの方向に対してドット単位で移動させることが可能です。
ご返答ありがとうございます。
こちらの勉強不足でした・・・。早速試してみます!
 
トップ