【解決済】壁だけをすり抜けるイベントの設定

返信する
白白白
記事: 62
登録日時: 2024年2月28日(水) 22:35

【解決済】壁だけをすり抜けるイベントの設定

投稿記事 by 白白白 »

いつもお世話になっております。
新たなトピックを失礼致します。

イベントのオプション「すり抜け」に関しての質問です。
デフォルトでは敵として設置したイベントのすり抜けにチェックを入れるとプライオリティを「通常キャラと同じ」にしても、プレイヤーも他のイベントもすり抜けてしまいます。
そこで、壁などの通行不可タイルはすり抜けるが、プレイヤーや他のイベントはすり抜けないといった挙動ができればと考えております。

方法に心当たりのある方はぜひ教えて頂ければと思います。
最後に編集したユーザー 白白白 [ 2024年6月06日(木) 09:26 ], 累計 1 回
白白白
記事: 62
登録日時: 2024年2月28日(水) 22:35

Re: 壁だけをすり抜けるイベントの設定

投稿記事 by 白白白 »

追記を失礼致します。

viewtopic.php?t=10731

こちらのトピックでイベント同士のすり抜け設定はできるようなので、こちらをプレイヤーに反映することができれば理想とする動作になりそうです。

どうかプラグインに詳しい方にご協力をお願いできればと思います。
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: 壁だけをすり抜けるイベントの設定

投稿記事 by すおう »

コード: 全て選択

    Game_Event.prototype.isThroughXy = function(x, y) {
        return this._through && (this.NtEventsXy(x, y).length === 0);
    };
↓変更

コード: 全て選択

    Game_Event.prototype.isThroughXy = function(x, y) {
        return this._through && (this.NtEventsXy(x, y).length === 0) && !this.isNtPlayerXy(x, y);
    };
あとこれを追加

コード: 全て選択

    Game_Event.prototype.isNtPlayerXy = function(x, y) {
		return $gamePlayer.pos(x, y) && !!this._NtEvents.find(id => Number(id) < 0);
    };
これで-1など負の値のときにプレイヤーをすり抜けないはずです
1つ注意点で
<NtEvents:1,3,5>
などと書くときに空白があるとうまく働かないようになっているようです
<NtEvents: 1, 3, 5> ←半角の空白を入れているので働いてくれない


・・・これもしかしてプレイヤー側も反映させないとダメですか?
それはこのプラグインではどうにもならない気がするなあ
白白白
記事: 62
登録日時: 2024年2月28日(水) 22:35

Re: 壁だけをすり抜けるイベントの設定

投稿記事 by 白白白 »

>>すおう様
ご返信を頂きありがとうございます。

ご教示の通りにしたところ、ほぼ理想的な動作をさせることができました。
一点だけ、元々のプラグインの仕様なのかもしれませんが、通り抜け不可の設定をしても、移動のタイミングが被るとイベント同士が重なり、動かなくなってしまいます。
もし対策が可能でしたらご教示頂ければと存じます。
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: 壁だけをすり抜けるイベントの設定

投稿記事 by すおう »

申し訳ないですが分からないです、というより再現できませんでした
お互いを通り抜け不可にしたイベント通しを歩行頻度MAXにして
同じマスに同着するように正面衝突させましたが普通にぶつかりました

考えられる1番の可能性はプラグインの競合です
そこでまずは新しくプロジェクトを作ってこのプラグインだけを入れてうまくいくか試してはどうでしょうか
そこで問題が起こらなければ何かしらのプラグインとかち合っています
白白白
記事: 62
登録日時: 2024年2月28日(水) 22:35

Re: 壁だけをすり抜けるイベントの設定

投稿記事 by 白白白 »

>>すおう様

お手数をお掛け致しました。
両方を通り抜け不可にしたところ、こちらでも重ならないことを確認しました。
これでまたゲーム制作を続けられそうです。本当にありがとうございました。
返信する

“MV:質問”に戻る