3DRPGマップの位置判定の仕方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
史上最悪のデスペナ
記事: 521
登録日時: 14年前

3DRPGマップの位置判定の仕方

#1

投稿記事 by 史上最悪のデスペナ » 14年前

図のようにマップを格子状に区切って自分の大まかな位置を取得したいと思っています。
例.png
例.png (8.55 KiB) 閲覧数: 2644 回
黒丸が自機、赤丸がMOB、青丸がNPCです。
視野サイズは格子と同じサイズとします。つまり、仮に格子11のちょうど真ん中にキャラがいた場合格子11内しか見えませんが、図のような場合は中心よりも若干格子16よりなので、格子12,15,16の一部が見えるという状況です。

今回の場合ですと、格子11内のMOB全部と格子12,15のMOBが視野内にあり、残りは見えません。
キャラが格子10に進むと徐々に格子11内のMOBは格子12よりのMOBから見えなくなり、逆に格子10のMOBやNPCが見えてくるはずです。

お聞きしたいのは
NPCやMOBを描画する際、見えない位置にいるのを描画しても意味ないので、格子番号を取得して周りの格子(図のような場合であれば格子6,7,8,10,12,14,15,16)を描画するようにしたいのですが
いい方法はないでしょうか?件名の通り3Dマップです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3DRPGマップの位置判定の仕方

#2

投稿記事 by softya(ソフト屋) » 14年前

格子のバウンダリ(境界)・ボックスを作って、その4頂点のどれから座標が視野角内に入っているかで表示ON/OFFを決めたほうが良いでしょう。
バウンダリ(境界)・ボックスの座標と当たり判定すればキャラ達は、どの格子に属しているか知ることが出来ます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

史上最悪のデスペナ
記事: 521
登録日時: 14年前

Re: 3DRPGマップの位置判定の仕方

#3

投稿記事 by 史上最悪のデスペナ » 14年前

当たり判定を使わずに単純にやるのは無理でしたか・・・・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3DRPGマップの位置判定の仕方

#4

投稿記事 by softya(ソフト屋) » 14年前

単純に格子状に地形モデルも含めて区切れるのであれば、100で割るとか単純な計算で出来ますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 3DRPGマップの位置判定の仕方

#5

投稿記事 by beatle » 14年前

第一歩としては、座標と格子番号の対応表を用意することでしょうか。
3Dマップということなので、高さ方向にも格子があるのか、それとも3Dマップだけれども平面的にしか
格子分割されていないのかわかりませんが、ここでは3次元座標系を仮定します。2次元座標系でも同じ考えでいけます。

まず単純な方法としては、x,y,zに対応する3次元配列を用意し、各要素へ格子番号を格納していく方法があります。
grid_indices[z][y][x] = 格子番号
のように、すべての配列要素に格子番号を割り振っておきます。
そして、自機が(x0,y0,z0)にいるときに描画する際には、
grid_indices[x0-1][y0-1][z0-1]~grid_indices[x0+1][y0+1][z0+1]
で格子番号を取得し、その格子を描画すればいいでしょう。

次に3次元配列を使わず、格子座標から格子番号を求めるやり方もあるでしょう。
格子番号の振り方が規則的なら、計算で格子座標から格子番号を求められるはずです。

史上最悪のデスペナ
記事: 521
登録日時: 14年前

Re: 3DRPGマップの位置判定の仕方

#6

投稿記事 by 史上最悪のデスペナ » 14年前

平面的にしか格子分割しないつもりでした。

beatleさんの方法でやってみようと思います。
分からなくなったら softya(ソフト屋)さんのバウンダリ・ボックスの方法に切り替えるかもしれませんが・・・・・・

non
記事: 1097
登録日時: 15年前

Re: 3DRPGマップの位置判定の仕方

#7

投稿記事 by non » 14年前

おおまかな格子状って、本当に必要なのですか?
マップのスクロールのためなら必要かもしれないけど、視野範囲のためなら、いらないのでは?
だって、ちょうど中心じゃない場合は隣接した部分も描画するんでしょ。
問題は視野範囲を地形効果がない場合に自機からの距離で円(or球)で考えるか、四角で考えるかではないのですか?
non

閉鎖

“C言語何でも質問掲示板” へ戻る