球とモデルの当たり判定
val = MV1CollCheck_Sphere(MHandle, FrameIndex, CenterPos, r)
int MHandle : モデルのハンドル int FrameIndex : コリジョンの情報を更新するフレームの番号 VECTOR CenterPos : 当たり判定で使用する球の中心座標 float r : 当たり判定で使用する球の半径
(プラグイン / モジュール : DxLibW)
MHandle のモデルハンドルが示すモデルの指定のフレーム( 若しくはモデル全体 )に含まれるポリゴンと球との当たり判定を行います。
( この関数でモデルのポリゴンと線分との当たり判定を行う場合は対象となるフレーム( 若しくはモデル全体 )に対して事前に MV1SetupCollInfo を呼んで準備を行っておく必要があります、
また、MV1SetupCollInfo で FrameIndex を -1 にした場合は、この関数でも FrameIndex を -1 にする必要があります )
戻り値である MV1_COLL_RESULT_POLY_DIM は当たり判定の結果が代入されている構造体で、以下のような内容になっています。
// コリジョン結果代入用ポリゴン配列
struct MV1_COLL_RESULT_POLY_DIM
{
// 当たったポリゴンの数
int HitNum ;
// 当たったポリゴンの配列へのポインタ
// ( 配列の要素数は HitNum です )
MV1_COLL_RESULT_POLY *Dim ;
} ;
また、MV1_COLL_RESULT_POLY_DIM 構造体で使用されている MV1_COLL_RESULT_POLY 構造体は以下のような内容になっています。
// コリジョン結果代入用ポリゴン
struct MV1_COLL_RESULT_POLY
{
// どれかのポリゴンに当たったかどうか
// ( 球との当たり判定の場合は必ず 1 )
int HitFlag ;
// 球とポリゴンの最近点の座標
VECTOR HitPosition ;
// 当たったポリゴンが含まれるフレームの番号
int FrameIndex ;
// 当たったポリゴンが使用しているマテリアルの番号
int MaterialIndex ;
// 当たったポリゴンを形成する三点の座標
VECTOR Position[ 3 ] ;
// 当たったポリゴンの法線
VECTOR Normal ;
} ;
構造体の説明ですが、まず球とフレーム( 若しくはモデル全体 )との当たり判定を行うと戻り値として MV1_COLL_RESULT_POLY_DIM 構造体が返ってきます。
この構造体の中身にはメンバ変数 HitNum と Dim があり、当たったポリゴンの数が HitNum に代入されています。
この HitNum が 0 だったら球は対象のフレーム( 若しくはモデル全体 )に含まれるポリゴンに一枚も当たらなかったということです。
そして当たった場合は、当たったポリゴンの数が HitNum に代入され、
どんなポリゴンと当たったかに関する情報がポインタ Dim が示すアドレスに当たったポリゴンの数だけ要素がある配列として格納されます。
当たったかどうかだけを判断する場合は HitNum が 0 かどうかを判定するだけで、
当たったポリゴンに関する情報を扱いたい場合は Dim の先にある配列にアクセスするという使い方になります。
( Dim へのアクセスの仕方についてはサンプルプログラムを見ていただくとわかりやすいと思います )
また、この関数は当たるポリゴンの数が不定である関係上、動的にメモリを確保していますので、
戻り値の情報が必要なくなった場合は MV1CollResultPolyDimTerminate 関数に戻り値の構造体を渡して後始末を行う必要があります。
※ この関数は #cfuncst で宣言されています。
戻り値は構造体 MV1_COLL_RESULT_POLY_DIM (8バイト) へのポインタです。
dupptr で変数にマッピングして使用してください。
| プラグイン / モジュール | DxLibW |
| バージョン | 3.24f |
| 作成日 | 2026/04/12 |
| 著作者 | DxLib: Takumi Yamada / HSP binding: IronHSP Project |
| URL | https://dxlib.xsrv.jp/ |
| 備考 | hspdxlib.as をインクルードして使用 |
| タイプ | DxLib ゲームライブラリ |
| グループ | DxLib 3Dモデル |
| 対応環境 |
|
| hs ファイル | hsphelp\hspdxlib.hs |