MV1CollCheck_Line

線分とモデルの当たり判定

val = MV1CollCheck_Line(MHandle, FrameIndex, PosStart, PosEnd)

int MHandle : モデルのハンドル
int FrameIndex : コリジョンの情報を更新するフレームの番号
VECTOR PosStart : 当たり判定で使用する線分の始点
VECTOR PosEnd : 当たり判定で使用する線分の終点

(プラグイン / モジュール : DxLibW)

解説

MHandle のモデルハンドルが示すモデルの指定のフレーム( 若しくはモデル全体 )に含まれるポリゴンと線分との当たり判定を行います。

( この関数でモデルのポリゴンと線分との当たり判定を行う場合は対象となるフレーム( 若しくはモデル全体 )に対して事前に MV1SetupCollInfo を呼んで準備を行っておく必要があります、
また、MV1SetupCollInfo で FrameIndex を -1 にした場合は、この関数でも FrameIndex を -1 にする必要があります )

戻り値である MV1_COLL_RESULT_POLY は当たり判定の結果が代入されている構造体で、以下のような内容になっています。

// コリジョン結果代入用ポリゴン
struct MV1_COLL_RESULT_POLY
{
// どれかのポリゴンに当たったかどうか
// ( 1:当たった  0:当たらなかった )
int    HitFlag ;

// 線分とポリゴンが交差した座標
VECTOR    HitPosition ;

// 当たったポリゴンが含まれるフレームの番号
int    FrameIndex ;

// 当たったポリゴンのフレーム内番号
int PolygonIndex ;

// 当たったポリゴンが使用しているマテリアルの番号
int	MaterialIndex ;

// 当たったポリゴンを形成する三点の座標
VECTOR    Position[ 3 ] ;

// 当たったポリゴンの法線
VECTOR    Normal ;
} ;

注釈の通りですが、
どれかのポリゴンに当たったかどうかはメンバ変数 HitFlag が 1 かどうかで判断することができ、
線分とポリゴンが交差した座標は HitPosition に代入されます。

当たったポリゴンが含まれるメッシュを所有しているフレームの番号はメンバ変数 FrameIndex に、
当たったポリゴンが使用しているマテリアルの番号はメンバ変数 MaterialIndex に、
当たったポリゴンを形成する三頂点の座標はメンバ配列 Position に、
当たったポリゴンの法線はメンバ変数 Normal にそれぞれ代入されます。

※ この関数は #cfuncst で宣言されています。
戻り値は構造体 MV1_COLL_RESULT_POLY (100バイト) へのポインタです。
dupptr で変数にマッピングして使用してください。

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib 3Dモデル
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs