[掲示板へもどる]
一括表示

記事No: 21751 [関連記事]
タイトル当たり判定の形を自由自在にしたい
投稿日: 2025/09/03 19:05
投稿者ところてん [Wgrdi909]

どう実現したらいいか、よろしければアイデアや知恵をお借りできたらと思います。

■[やりたいこと]
近づくと起動するというコモンを作っています。
設定座標と主人公座標の距離を測って、返す値が大きくなったり小さくなったりすものです。

その設定座標の当たり判定の形を自由に設定したいという感じです。
イメージ図としては、中心値を一マス単位で自由な形に設定出来たらという感じです。

□□□□□□
□■□□□□
□■■■■□
□□■□□□
□□□□□□



■[やってみたこと]
距離を測るのではなく、XY配列に直接数値を入れてそれを取得するなど考えていますが、
ただ手動で設定するので、修正が入った時に全部やり直しになるというのがネックです。

行き詰っている点としては、なんとか自動化出来ないか?という点です。
中心となる部分を設定したら、後は自動で数値を返すようにならないか?という感じです。
四角であれば簡単ですが上記のような複雑な形だと、どう処理したものかと悩んでいます。



■[補足]
使用用途はマップの環境音などです。
なので基本、設定した中心座標が移動する事はありません。
ただマップタグ番号を取得する方法は、別処理と被ってしまうので使えません。


記事No: 21753 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/03 20:59
投稿者としこC [FreiFeW1095]

XY配列を使うという説明に悩んでいるのですが……

判定がマス単位で、
「近づくと起動する」というのが「範囲内に入る」であれば、
比較的簡単につくれます。


中心座標にマップイベントを設置した上で、
マップイベントの常時実行から判定計算を行う。

増やしたい当たり判定を相対座標(例:1,-1)として文字列変数に記述しておき、

一行(一マス)ずつループで切り出して、
文字列変数から数値変数(XY)に代入変換したものを利用する。

取り出した相対座標と、
マップイベント座標と主人公座標の差(XY)を加算することで、
マスごとの主人公との距離になり

その、どれかが(0,0)になれば接触となる。


□□□□□
□■中■□
□□□□□

このような形であれば

-1,0
0,0
1,0

といった文字列で良い。

※マップイベント位置(中心)を当たり判定に加えない場合を想定して
※相対座標(0,0)も記述しておく


上記のような手段であれば、当たり判定の形を変える場合は、
文字列変数の中身を修正するだけですみます。


質問を読み違えていたらすみません。


記事No: 21754 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/03 22:55
投稿者ところてん [Wgrdi909]

Re: 当たり判定の形を自由自在にしたい (画像サイズ: 192×176 21kB)

としこCさん、早い回答ありがとうございます。
とりあえず試してみます。



やりたい事は画像のような感じです。
要はマップ上に主人公が立った時、こういった数値の並びを簡易な設定から
自動で取得できるようにしたいという感じです。そこで上げたのがXY配列で、対象が動かないのでマップイベントと主人公の距離を測る方法でなくてもいいという感じです。

また説明が分かりづらかったすみません。


記事No: 21755 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/04 00:21
投稿者としこC [FreiFeW1095]

座標(XY)とその地点に入った時の返却値を返すなら、
私が書いたものを少し修正すれば可能ですが……、

特殊な当たり判定のマップイベントを別のマップでも複数作るなら、
座標と返却値の文字列を手書きで書き起こすのも手間ですね。


いっそのこと、ゲーム内にエディターコモンを作成すべきかも。


[1]ゲーム実行時に特定キーで設定用コモンを起動
[2]クリックした座標のイベントを原点にする(マップイベント名と、以降の計算用にXY座標を取得)
[3]0~9の数字キーを押して、返却値を設定
[4]座標をクリックすると、その座標(相対)と返却値を文字列変数に追加
[5]特定のキーで、DBをcsvファイル出力/csvファイルから読み込み


たとえば、返却値を(3)と設定した後に、原点マップイベントから(0,1)の座標をクリックした場合、

(0,1)=3

のような文字データを文字列に加算する。

同時に、設定中にマップ座標に合わせて設定値をピクチャ表示できれば、視覚的に分かりやすくなり設定ミスも防げます。


可変DBのタイプ内容としては、2つの文字列変数
・マップイベント名
・座標(XY)&返却値のデータリスト
となり、

「タイプ内容設定」の「データID設定方法」から
「最初の文字列データと同じ」を設定しておけば、
マップイベント名でデータ内容を参照できるようになります。


当たり判定を処理するコモンイベントには、マップイベント名を引数にして、

・マップイベント名からマップイベントID取得(文字列操作の隠しコード実行)
・マップイベントIDからマップイベント座標(XY)取得(変数操作+)
・マップイベント名から可変DBのデータリストを取得(DB操作)

以上の3つの情報を取得した上で、当たり判定処理を行うようにすれば、


マップイベント側は、自身のIDから取得できる自身のイベント名をコモンに投げるだけで、必要な値が返ってくることになります。


―――――――――――――

「ID」を直接使わず「マップイベント名」で参照するのは、これらのためです。
・マップイベントのコピペ並び替え(ID変動)
・別のマップでの流用

あと、正規表現を扱えると文字列操作が(特に置換操作で)短縮できると思います。


こんなところで、どうでしょうか?


記事No: 21757 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/04 00:56
投稿者としこC [FreiFeW1095]

マップイベントと主人公の相対座標(X,Y)を文字列化して
それと合致する部分を切り出すことで、返却値を取り出せそうです


一マスの文字列データ『( X 、 Y ) 戻り値 \n 』 


マップイベントXYが(5,6)
主人公XYが(3,5)
当たり判定データ
(-3,5)3
(-2,-1)4
(0,1)3

とした場合、

相対座標(3,5)-(5,6)で (-2,-1)


文字列操作の「指定文字以降を切り出し」で

"(-2,-1)"以降の
「4\n(0,1)3\n」が切り出されて、※\nは改行

切り出された「4\n(0,1)=3\n」をそのまま数値に代入すれば、4だけ取得できます



反対に、設定しているマスを取得したい場合は、
一行ずつ切り出して括弧()の中の座標XYを取り出していくことになります



※0904_07:37修正


記事No: 21756 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/04 00:45
投稿者Masaqq [reFeepeO402]

Re: 当たり判定の形を自由自在にしたい (画像サイズ: 1803×929 186kB)

横から失礼します。
 
制作環境がよく分からない部分はありますが
とりあえずいくつかの案を挙げておきます
(勘違いや良い方法がなかったらスミマセン)
 
案1:UDBにタグ番号DBを作る
マップタグ番号が使えないとのことですが
ユーザDBにタグ番号と同じようなものを作ればよいのではないでしょうか。
(参考資料として画像添付) 
 
※ただ、タイルが多かったりタイルセットを複数使っているとDB入力作業がしんどい。
 
案2:使ってないレイヤーと透明タイルを活用する
レイヤー3(Pro版なら4,5含む)の余りがあるなら、透明な専用のマップチップを
そのレイヤーに置いて判定処理用に使うのも手かもしれません。
(タイル設定は〇でなく↓設定にするなど配慮する) 
 
案3:マップタグ番号の定義を棲み分けする
1桁目を従来の機能(0〜9)、2桁目を仰ってる数値(0〜3?)にする。
仮に、タグ番号37なら ÷10で 3 に、%10で 7 になります
 
棲み分けできるかどうかは使う数値の範囲とやり方次第
数値を変えて÷30と%30で出来る可能性もある
  
案4:XY配列に全座標のそのトリガー数値を入れる
主人公が踏んだ場所で判定できるなら
XY配列 データ番号:X座標、項番:Y座標とかに見立てて入れればよいかと。
(マップがあまりに大きいと処理時間とメモリ利用料域とかは増えそう)
 
以上になります


記事No: 21758 [関連記事]
タイトルRe: 当たり判定の形を自由自在にしたい
投稿日: 2025/09/04 21:18
投稿者ところてん [Wgrdi909]

>> としこCさん、Masaqqさん、
としこCさんのエディターコモンの案と、Masaqqさんの透明マップチップの合わせワザでいこうと思います。
一時的にレイヤー4〜5を使って番号を振り分け、XY配列をcsvファイル出力or読み込みを活用しようと思います。

透明マップチップをそのまま使い続けるのはバグの元になりそうなので、csvファイルに直そうかと思います。


他のものも そうゆう方法もあるのかと目から鱗で、他の処で活用できそうで大変参考になりました。

お力添えいただいき、ありがとうございました。