指定座標にIDを問わずイベントがいるかどうかを判断する方法

やまもと

指定座標にIDを問わずイベントがいるかどうかを判断する方法

投稿記事by やまもと » 2022年4月07日(木) 08:58

指定座標にIDを問わずイベントがいるかどうかを判断し、存在した場合にそのイベントのIDを取得する、という事は可能でしょうか。

ゆわか
記事: 306
登録日時: 2015年11月10日(火) 20:08
連絡を取る:

Re: 指定座標にIDを問わずイベントがいるかどうかを判断する方法

投稿記事by ゆわか » 2022年4月07日(木) 09:49

イベントコマンドの3ページ目、マップというグループに「指定位置の情報取得」というコマンドがあります。
それを使用すると指定座標にあるイベントのIDを取得できます。
やまもと

Re: 指定座標にIDを問わずイベントがいるかどうかを判断する方法

投稿記事by やまもと » 2022年4月07日(木) 15:33

ゆわか さんが書きました:イベントコマンドの3ページ目、マップというグループに「指定位置の情報取得」というコマンドがあります。
それを使用すると指定座標にあるイベントのIDを取得できます。

返信ありがとうございます。デフォルトであったんですね。完全に見落としていました…

http://kitsunebigakuen.blog.fc2.com/blog-entry-70.html

こちらのサイト様で掲載されているスクリプトを元に衝突判定を並列処理で行なっているのですが、例えば

1. イベントID◯番の周囲にイベントが存在するかを判定
2.イベントが存在した場合に、そのイベントのIDを取得する

といった事が上記サイトのようなスクリプトで出来ないかと思っております

ご紹介頂いたコマンドでは実現できそうになかったので、改めてまた質問として上げさせていただきます。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 指定座標にIDを問わずイベントがいるかどうかを判断する方法

投稿記事by ムノクラ » 2022年4月07日(木) 20:13

やまもと さんが書きました:
ゆわか さんが書きました:イベントコマンドの3ページ目、マップというグループに「指定位置の情報取得」というコマンドがあります。
それを使用すると指定座標にあるイベントのIDを取得できます。

返信ありがとうございます。デフォルトであったんですね。完全に見落としていました…

http://kitsunebigakuen.blog.fc2.com/blog-entry-70.html

こちらのサイト様で掲載されているスクリプトを元に衝突判定を並列処理で行なっているのですが、例えば

1. イベントID◯番の周囲にイベントが存在するかを判定
2.イベントが存在した場合に、そのイベントのIDを取得する

といった事が上記サイトのようなスクリプトで出来ないかと思っております

ご紹介頂いたコマンドでは実現できそうになかったので、改めてまた質問として上げさせていただきます。


検索すれば、こういった参考になるスレッドが出てきます。

「RPGツクールMV スクリプト イベント座標」
viewtopic.php?t=3656

「RPGツクールMV スクリプト 指定位置の情報取得」
http://rpgmaker-script-wiki.xyz/getposiinfo_mv.php

まず、イベントコマンドで作れるかやってみます。
極力イベントコマンドでまとめた例を出します。

コード: 全て選択

◆変数の操作:#0001 イベント1X = this.character(1).x;
◆変数の操作:#0002 イベント1Y = this.character(1).y;
◆変数の操作:#0003 調査X = イベント1X
◆変数の操作:#0004 調査Y = イベント1Y
◆注釈:下方向調査
◆変数の操作:#0003 調査X = イベント1X
◆変数の操作:#0004 調査Y = イベント1Y
◆変数の操作:#0004 調査Y += 1
◆指定位置の情報取得:相手イベントID, イベントID, ({調査X},{調査Y})
◆条件分岐:相手イベントID ≠ 0
  ◆文章:なし, ウィンドウ, 下
  :  :下に何かいる!
  ◆
:分岐終了
◆注釈:上方向調査
◆変数の操作:#0003 調査X = イベント1X
◆変数の操作:#0004 調査Y = イベント1Y
◆変数の操作:#0004 調査Y -= 1
◆指定位置の情報取得:相手イベントID, イベントID, ({調査X},{調査Y})
◆条件分岐:相手イベントID ≠ 0
  ◆文章:なし, ウィンドウ, 下
  :  :上に何かいる!
  ◆
:分岐終了
◆注釈:左方向調査
◆変数の操作:#0003 調査X = イベント1X
◆変数の操作:#0004 調査Y = イベント1Y
◆変数の操作:#0003 調査X -= 1
◆指定位置の情報取得:相手イベントID, イベントID, ({調査X},{調査Y})
◆条件分岐:相手イベントID ≠ 0
  ◆文章:なし, ウィンドウ, 下
  :  :左に何かいる!
  ◆
:分岐終了
◆注釈:右方向調査
◆変数の操作:#0003 調査X = イベント1X
◆変数の操作:#0004 調査Y = イベント1Y
◆変数の操作:#0003 調査X += 1
◆指定位置の情報取得:相手イベントID, イベントID, ({調査X},{調査Y})
◆条件分岐:相手イベントID ≠ 0
  ◆文章:なし, ウィンドウ, 下
  :  :右に何かいる!
  ◆
:分岐終了

リンクされた記事の通り、重くなりやすいイベントです。

これを8方向でチェックするようになっているスクリプトが下記です。

コード: 全て選択

//イベント1にイベント3が隣に来るとコモンイベント4が実行される
const mainEventId = 1;
const targetEventId = 3;
const commonEventId = 4;
const range = 1;
if ((this.character(targetEventId).x + range) >= this.character(mainEventId).x
    && (this.character(targetEventId).y + range) >= this.character(mainEventId).y
    && (this.character(targetEventId).x - range) <= this.character(mainEventId).x
    && (this.character(targetEventId).y - range) <= this.character(mainEventId).y) {
    $gameTemp.reserveCommonEvent(commonEventId);
}


※ただ、内容の意味も分からずにスクリプトを使うと、バグが発生した時に対応できないと思います。
ですので、理解している内容で問題がない手法を選ぶことをお勧めします。
アクションゲームを作りたいのでしたら、下記の記事やプラグインを研究したほうが良いと思います。

https://fermiumbay13.hatenablog.com/ent ... /01/120613
https://fungamemake.com/archives/7217


イベントコマンドを写経するのも面倒だと思うので、テストしたサンプルを付けます。
解凍して、新規プロジェクトに入れてマップを見てください。
添付ファイル
2022-04-07-eventIdXy-sample.zip
(990 バイト) ダウンロード数: 2 回
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。

“MV:質問” へ戻る