質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

ど~り
記事: 10
登録日時: 2024年1月10日(水) 01:47

質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ど~り » 2024年1月19日(金) 14:37

こんにちは。

今回は2点質問です。
前回の質問からまた違う疑問がわいたので新しい描き込みになります。

①イベントの当たり判定を小さくしたい
②プラグインからコモンイベントを呼び出す

の2点で詳細は下記と添付する画像をご覧ください。


①イベントの当たり判定を小さくしたい
※トリアコンタン様の半歩移動プラグインを導入しております。

イベントの判定で良いのでしょうか?
イベントを配置すると通行できない箇所やアクターとの妙な隙間が気になります。
判定の拡大は半歩移動内でも見かけたのですが縮小はプラグインや記事などもそれらしいものが私には見つけられませんでした。


②プラグインからコモンイベントを呼び出す
※Ruたん様の本棚プラグイン【Torigoya_Bookshelf.js】+【ecf5DTTzl6h6lJj02さん】が改良してくださった物を使っています。
前回の書きこみ→https://tm.lucky-duet.com/viewtopic.php?f=23&t=14519

さらに別の機能付け加える事ができるのかと追加の質問です。
こちらは自作メニューを作成しており、メインメニューとサブメニュー3種(本棚プラグイン、コモンイベント2種)があります。
そのサブメニュー間で任意のキーで移動する記述を追加できないかと考えています(tabキーとShiftキーあたりを考えています)

プラグインを閉じる時にキャンセルキーでpop sceneを閉じている記述は見つけました。
プラグインに関し知識が浅いため閉じた後にプラグイン内で定義されているわけではないコモンイベントをそもそも呼び出すことができるのでしょうか?

お時間ありましたらお教えください。

ねこしゃり
記事: 12
登録日時: 2024年1月13日(土) 02:30
連絡を取る:

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ねこしゃり » 2024年1月19日(金) 21:54

>の2点で詳細は下記と添付する画像をご覧ください。

画像の添付はされましたか?
こちらでは表示されてないので恐らく添付に失敗されているかと思います。
ご確認お願いします。
ecf5DTTzl6h6lJj02
記事: 459
登録日時: 2018年12月23日(日) 13:55

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ecf5DTTzl6h6lJj02 » 2024年1月20日(土) 18:45

こんばんは。
ど~り さんが書きました:こんにちは。

今回は2点質問です。
前回の質問からまた違う疑問がわいたので新しい描き込みになります。

①イベントの当たり判定を小さくしたい
②プラグインからコモンイベントを呼び出す

の2点で詳細は下記と添付する画像をご覧ください。


①イベントの当たり判定を小さくしたい
※トリアコンタン様の半歩移動プラグインを導入しております。

イベントの判定で良いのでしょうか?
イベントを配置すると通行できない箇所やアクターとの妙な隙間が気になります。
判定の拡大は半歩移動内でも見かけたのですが縮小はプラグインや記事などもそれらしいものが私には見つけられませんでした。


②プラグインからコモンイベントを呼び出す
※Ruたん様の本棚プラグイン【Torigoya_Bookshelf.js】+【ecf5DTTzl6h6lJj02さん】が改良してくださった物を使っています。
前回の書きこみ→https://tm.lucky-duet.com/viewtopic.php?f=23&t=14519

さらに別の機能付け加える事ができるのかと追加の質問です。
こちらは自作メニューを作成しており、メインメニューとサブメニュー3種(本棚プラグイン、コモンイベント2種)があります。
そのサブメニュー間で任意のキーで移動する記述を追加できないかと考えています(tabキーとShiftキーあたりを考えています)

プラグインを閉じる時にキャンセルキーでpop sceneを閉じている記述は見つけました。
プラグインに関し知識が浅いため閉じた後にプラグイン内で定義されているわけではないコモンイベントをそもそも呼び出すことができるのでしょうか?

お時間ありましたらお教えください。


1つのトピックの中で、全く関連性のない質問を併記されてしまうと、
回答がごちゃごちゃになって、あとからトピックを参照する人が把握しづらくなってしまったり、
色々と支障が出るので、別々のトピックを立てるようにしていただけると助かります。
次回以降はお気を付けください。

まず、①の内容について、回答させていただきます。

動作を確認してみたところ、
どうも Y 方向に対しては、半歩分のすり抜けが有効で、キャラクターが半分イベントにめり込むのに対し、
X 方向に対しては、半歩分のすり抜けが有効ではなく、キャラクターがめり込まないようです。

プラグインを編集できるツールで HalfMove.js を 開き、以下の変更を行ってください。
(編集する前に、プラグインファイルのバックアップを取っておいてください)

  1. 1196 行目にある posUnitHt というメソッドを以下に変更してください。

    コード: 全て選択

        Game_CharacterBase.prototype.posUnitHt = function(x, y) {
            return this.posUnit(x, y) && !this.isHalfThroughY(y) && !this.isHalfThroughX(x);
        };

  2. 上記変更を行うと 1206 行目あたりに来る isCollidedWithEventsForHalfMove というメソッドの中にある、

    コード: 全て選択

                if (event.isNormalPriority() && !event.isHalfThrough(y) && !event.pos(this.x, this.y)) {
                    this.collidedToEvent(event);
                    result = true;
                }

    という部分(おそらく 1210 行目あたり)を、

    コード: 全て選択

                if (event.isNormalPriority() && !event.isHalfThroughY(y) && !event.isHalfThroughX(x) && !event.pos(this.x, this.y)) {
                    this.collidedToEvent(event);
                    result = true;
                }

    に変更してください。

  3. 上記変更を行うと 1233 行目あたりにくる、 isHalfThrough というメソッドを以下に変更してください。

    コード: 全て選択

        Game_CharacterBase.prototype.isHalfThroughY = function(y) {
            return !this._customExpansion && this.isThroughEnable() && this.y !== y;
        };

  4. 上記メソッドの下に以下のメソッドを追加してください。

    コード: 全て選択

        Game_CharacterBase.prototype.isHalfThroughX = function(x) {
            return !this._customExpansion && this.isThroughEnable() && this.x !== x;
        };

  5. 上記変更を行うと 1680 行目あたりにくる、isCollidedWithEvents というメソッドの中にある、

    コード: 全て選択

                return event !== this && !event.isHalfThrough(y) && (!paramEventOverlap || event.isNormalPriority());

    という部分(おそらく 1685 行目あたり)を、

    コード: 全て選択

                return event !== this && !event.isHalfThroughY(y) && !event.isHalfThroughX(x) && (!paramEventOverlap || event.isNormalPriority());

    に変更してください。

  6. 上記変更を行うと 1692 行目あたりにくる、isCollidedWithPlayerCharacters というメソッドの中にある、

    コード: 全て選択

            if (!result && !this.isHalfThrough($gamePlayer.y) && this.isNormalPriority()) {
                var tileUnit = Game_Map.tileUnit;
                result       = $gamePlayer.isCollided(x, y - tileUnit) || $gamePlayer.isCollided(x, y + tileUnit);
            }

    という部分(おそらく 1694行目あたり)を、

    コード: 全て選択

            if (!result && !this.isHalfThroughY($gamePlayer.y) && !this.isHalfThroughX($gamePlayer.x) && this.isNormalPriority()) {
                var tileUnit = Game_Map.tileUnit;
                result       = $gamePlayer.isCollided(x - tileUnit, y - tileUnit) || $gamePlayer.isCollided(x + tileUnit, y + tileUnit);
            }

    に変更してください。
この変更で、X 方向に対しても、半歩すり抜けが有効になるかと思います。

ご確認ください。

2024/01/22 追記:
・1. の項目に関し、isHalfThrough(x) となるはずの部分が HalfThrough(X) になっている
・5. の項目に関し、行数が間違っている
上記、修正しました。
失礼いたしました。
最後に編集したユーザー ecf5DTTzl6h6lJj02 on 2024年1月22日(月) 09:27 [ 編集 3 回目 ]
ecf5DTTzl6h6lJj02
記事: 459
登録日時: 2018年12月23日(日) 13:55

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ecf5DTTzl6h6lJj02 » 2024年1月20日(土) 18:56

長くなってしまうので、記事を分けました。
続いて、
ど~り さんが書きました:②プラグインからコモンイベントを呼び出す
※Ruたん様の本棚プラグイン【Torigoya_Bookshelf.js】+【ecf5DTTzl6h6lJj02さん】が改良してくださった物を使っています。
前回の書きこみ→https://tm.lucky-duet.com/viewtopic.php?f=23&t=14519

さらに別の機能付け加える事ができるのかと追加の質問です。
こちらは自作メニューを作成しており、メインメニューとサブメニュー3種(本棚プラグイン、コモンイベント2種)があります。
そのサブメニュー間で任意のキーで移動する記述を追加できないかと考えています(tabキーとShiftキーあたりを考えています)

プラグインを閉じる時にキャンセルキーでpop sceneを閉じている記述は見つけました。
プラグインに関し知識が浅いため閉じた後にプラグイン内で定義されているわけではないコモンイベントをそもそも呼び出すことができるのでしょうか?

の質問についてですが、
どういう場面、動きを想定しているのか、細かい仕様をお教えいただけると助かります。
それによって、別のアプローチを提案するなど、回答が変わってきそうです。

ご確認ください。
ど~り
記事: 10
登録日時: 2024年1月10日(水) 01:47

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ど~り » 2024年1月21日(日) 01:11

ecf5DTTzl6h6lJj02様

こんばんは、またまたお世話になります。

>1つのトピックの中で~
連続したトピックを作らない方がいいかと思い今回まとめてしまったので次回からは分けて作成いたします。
ご指摘ありがとうございます。

①の方はHalfmoveの記述をすべて書き換えたところ無事に半歩擦り抜けが有効になりました!
ツクールの仕様上今回質問した状態になっているのかと思っていたのですがプラグイン内の処理で起きていたことなんですね。
(後日他の方が見たときにわかるよう、5番が1681行のあたりにありましたことをお伝えしておきます!検索すれば1行しかないため大丈夫だと思うのですが…)

②については改めて書きこみ致します。
ど~り
記事: 10
登録日時: 2024年1月10日(水) 01:47

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ど~り » 2024年1月21日(日) 01:13

ecf5DTTzl6h6lJj02様

引き続き②のほうになりますが

画像の方に実行内容のスクリーンショットを記載いたしました。

Input.isTriggered('shift')
Input.isTriggered('tab')
のスクリプトを使った条件文でコモンイベントの呼び出し他を行っています。
コモンイベント:本棚の中に本棚プラグインのプラグインコマンドを記載してあります。

もし他にも情報が足りない場合仰ってくださいませ。

ツムミ様、トレトレ様の自作メニュー作成を応用し作成しています。
https://ci-en.dlsite.com/creator/9721/article/495977
https://pd-present.moo.jp/PC_otaku/archives/471

トリアコンタン様の【タブのロストフォーカス無効化 - BugFixTabLostFocus.js】でtabキーの初回入力対応させています。

ご確認のほどよろしくお願いします。
添付ファイル
質問画像データ5.png
ecf5DTTzl6h6lJj02
記事: 459
登録日時: 2018年12月23日(日) 13:55

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ecf5DTTzl6h6lJj02 » 2024年1月21日(日) 02:59

こんにちは。
ど~り さんが書きました:引き続き②のほうになりますが

画像の方に実行内容のスクリーンショットを記載いたしました。

Input.isTriggered('shift')
Input.isTriggered('tab')
のスクリプトを使った条件文でコモンイベントの呼び出し他を行っています。
コモンイベント:本棚の中に本棚プラグインのプラグインコマンドを記載してあります。

もし他にも情報が足りない場合仰ってくださいませ。

ツムミ様、トレトレ様の自作メニュー作成を応用し作成しています。
https://ci-en.dlsite.com/creator/9721/article/495977
https://pd-present.moo.jp/PC_otaku/archives/471

トリアコンタン様の【タブのロストフォーカス無効化 - BugFixTabLostFocus.js】でtabキーの初回入力対応させています。

ご確認のほどよろしくお願いします。

プラグイン側に、shift キー、 tab キー を押したときに呼び出すコモンイベントを設定し、
キーが押されたときに、設定されたコモンイベントを予約して、マップ画面に戻ってくるように処理すればよさそうなので、
そのように改変をしてみました。

ご確認をお願いします。
添付ファイル
Torigoya_Bookshelf.js
(34.42 KiB) ダウンロード数: 3 回
ど~り
記事: 10
登録日時: 2024年1月10日(水) 01:47

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ど~り » 2024年1月22日(月) 01:15

ecf5DTTzl6h6lJj02様

プラグインのカスタムありがとうございます!
導入させていただいたところshiftキーとtabキーを押した際に無事にコモンイベントを呼び出すことができました!


挙動がおかしいところと、カスタムしていただいた事で1点現在のプラグインについてご相談したい内容があったので下記のご確認お願いします。


キーを押して挙動を確認していたところメインメニューが出ない動きにしているはずが時折出てきてしまうことがありました。
見つけた挙動では以下の動きをしていました。

プラグイン→Shift→tab→プラグイン→Shift→メインメニュー

プラグイン→tab→shift→プラグイン→tab→メインメニュー

プラグイン→tab3回→プラグイン→shift→メインメニュー

プラグイン→shift3回→プラグイン→tab→メインメニュー

tabキーだけ、もしくはshiftキーだけを押しているだけではプラグインが閉じて突如メインメニューが表示されることはありませんでした。
どこか設定ミスをしてしまっているのでしょうか?


もう1点の相談のほうは、プラグインを閉じたときはカーソルが左上に戻るようにしたいというものです。
現在コモンイベントからメインメニューに戻るときカーソルを同じ位置に戻るようにしており、今の状態ですとメインメニュー右上のコモンイベントからプラグインに遷移して閉じたときにメインメニューのカーソルは右上のままとなります。
プラグイン閉じたときにカーソルが変な位置に表示されていると混乱しそうなのでご相談させていただきます。

ご確認のほどよろしくお願いします。
添付ファイル
質問画像データ6.png
ecf5DTTzl6h6lJj02
記事: 459
登録日時: 2018年12月23日(日) 13:55

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ecf5DTTzl6h6lJj02 » 2024年1月22日(月) 02:23

こんにちは。
ど~り さんが書きました:ecf5DTTzl6h6lJj02様

プラグインのカスタムありがとうございます!
導入させていただいたところshiftキーとtabキーを押した際に無事にコモンイベントを呼び出すことができました!


挙動がおかしいところと、カスタムしていただいた事で1点現在のプラグインについてご相談したい内容があったので下記のご確認お願いします。


キーを押して挙動を確認していたところメインメニューが出ない動きにしているはずが時折出てきてしまうことがありました。
見つけた挙動では以下の動きをしていました。

プラグイン→Shift→tab→プラグイン→Shift→メインメニュー

プラグイン→tab→shift→プラグイン→tab→メインメニュー

プラグイン→tab3回→プラグイン→shift→メインメニュー

プラグイン→shift3回→プラグイン→tab→メインメニュー

tabキーだけ、もしくはshiftキーだけを押しているだけではプラグインが閉じて突如メインメニューが表示されることはありませんでした。
どこか設定ミスをしてしまっているのでしょうか?


もう1点の相談のほうは、プラグインを閉じたときはカーソルが左上に戻るようにしたいというものです。
現在コモンイベントからメインメニューに戻るときカーソルを同じ位置に戻るようにしており、今の状態ですとメインメニュー右上のコモンイベントからプラグインに遷移して閉じたときにメインメニューのカーソルは右上のままとなります。
プラグイン閉じたときにカーソルが変な位置に表示されていると混乱しそうなのでご相談させていただきます。

ご確認のほどよろしくお願いします。

まず、先に、カーソルを左上に戻したい、という件についてですが、
画面遷移の時に、メニュー2番に戻るや、メニュー3番に戻るのスイッチがきちんと切り替えられているなら、
コモンイベント側で処理して、正しい位置にもどせるはずではないかなぁと思います。
なので、プラグインをさらに改変する必要性を感じません。

次に、 shift や tab での画面遷移についてですが、
プラグイン側はコモンイベントの予約をして、マップ画面に戻る動作しかしていません。
プラグイン側の問題というより、コモンイベント側でスイッチの操作が正しく行われない部分があるために、
起こっているのではないかと思いますが、この画像だと、それぞれの画面でのボタン処理が把握できないので、何とも言えません。

この辺りの、コモンイベントの内容を全部、書き出していただくか、
メニュー周りの動作を確認できるようにしたプロジェクトを渡すかしてもらえれば、
カーソルを左上に戻したいという件も含めて、
こちらで確認・アドバイス等することができるのですが、
そういったことは可能でしょうか?

ご確認ください。
ど~り
記事: 10
登録日時: 2024年1月10日(水) 01:47

Re: 質問2点 イベントの当たり判定/プラグインからコモンイベントを呼び出す

投稿記事by ど~り » 2024年1月22日(月) 16:35

ecf5DTTzl6h6lJj02様

ご確認ありがとうございます!
ご指摘いただいたところを見直したのですが挙動を起こしている場所がわからずデータを送ろうと考えたのですが、今後も修正や不備の度に質問を重ねてただでさえJavaScriptがわかっていない状態でさらに管理できない状態にするのも難しいなと思いメニューの挙動を改めて考え直すことにしました…。
JavaScriptについて初心者である私の質問や要望に貴重なお時間を頂いて色々対応していただいたにもかかわらず大変申し訳ないのです…。最初の時点で気づけばよかったのですが本当にすみません…。

また他で質問ができたときにご相談に乗っていただけると嬉しいです。
この度は貴重なお時間ありがとうございました!

“MV:質問” へ戻る