
3DのFPS,TPS,レイルシューターなどのゲームを遊んでいると、射撃対象のオブジェクトの実際の見た目と被弾判定範囲とのギャップがほとんど、というより全く無いように思えるのですが、
そのような精密で、かつ高速な当たり判定はどのように実現されているのでしょうか。
オブジェクトのモデルと全く同じ衝突判定用モデルを用いれば可能でしょうが、何千というポリゴンから成る最近のゲームキャラクターに対しては現実的な方法では無いと思います。
可能であればざっくりとした解説をお願いします。
補足: 実際の作品例を以下に挙げます。
HALOシリーズ,GOWシリーズ,バイオハザード4,罪と罰 宇宙の継承者
No.1ベストアンサー
- 回答日時:
自分が作った時は
・表示するモデルと別の簡素化したモデルを基準に当り判定を行いました。
・面と面は結構処理が重たかったので、線分と線分、線分と円での判定を行いました。
てな感じです。
> 何千というポリゴンから成る最近のゲームキャラクターに対しては現実的な方法では無いと思います。
とお考えの様ですが、最近のPCやゲーム機だとそんな事は無いと思います。
ざっくりとした解説と言うのが接触判定の処理方法に関してでしたら、
・OBB(この言い方は古いかも知れません)
・二分木による判定のカリング
上記を元に調べてみると良いかも知れません。
この手のジャンルのゲームの当たり判定があまりに良くできているので、幾何学的計算によらない、何か"裏技的"に最適化された方法(例えばシェーダー,GPUを活用したトリック)が確立されているのではないかと思った事からこのトピックを立てました。
簡素化された判定用モデルを使っているのだとしたら、大体どの程度の簡素化がなされているのか、とても興味があります。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
error C2712: オブジェクト ア...
-
戻り値がクラスオブジェクト
-
CFileDialogでフォルダだけを選...
-
CoCreateInstanceでエラーになる。
-
FPS,TPSの当たり判定
-
Rangeオブジェクトを一時的に作...
-
オブジェクト名をforループ内で...
-
【Java】入力した西暦→和暦に変...
-
C#でフォームのオブジェクト名...
-
newは明示的にした方が良いのか?
-
ArrayLsitのデータ取得
-
bmp画像をjpegやpng画像に圧縮...
-
VBSでのステートメントの末尾が...
-
VBAのWindowオブジェクトとWork...
-
オブジェクトと関数の違い
-
EXCEL VBAにて動的にCheckBOXを...
-
ASP.net 教えてください!!(...
-
VBA 同じ名前のオブジェクトを...
-
開始日(Date型)から終了日(Date...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
VBA 同じ名前のオブジェクトを...
-
EXCEL VBAにて動的にCheckBOXを...
-
パワーポイントのVBAでテキスト...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
Object型からDouble型へのキャスト
-
時間帯判定をする。
-
C++で*thisは何を指しているの...
-
ワイルドカード<?>と型パラメー...
-
Accessの連結・非連結オブジェ...
-
COMコンポーネントって何?
-
newは明示的にした方が良いのか?
-
ビジュアルC++でボタンの有...
-
CoCreateInstanceでエラーになる。
-
ResultSet での問題
-
多人数のじゃんけんプログラム
-
printerオブジェクトでのテキス...
-
サーブレットのクラス図について。
-
VBSでのステートメントの末尾が...
おすすめ情報