gppsweeptest

モデルを指定ベクトルに移動させた際の物理衝突情報を取得する

gppsweeptest var,objid,x,y,z,group

var     : 検出したオブジェクトID値が代入される変数名
objid(0): オブジェクトID
x(0)    : X座標(実数)
y(0)    : Y座標(実数)
z(0)    : Z座標(実数)
group(0): コリジョングループ適用スイッチ(0=なし)

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

解説

objidパラメーターで指定した3Dノードを持つオブジェクトの現在位置を基点として、(X,Y,Z)で指定された座標に移動させた場合に最初に衝突する3DオブジェクトのオブジェクトIDを調査します。
objidパラメーターで指定されるオブジェクトに設定された物理情報をもとに、衝突判定のテストを行います(実際には移動されません)。
groupパラメーターで、衝突の対象となるコリジョングループを考慮するかどうかを設定します。groupパラメーターを省略するか0以外が設定された場合は、setcoli命令で指定されたコリジョングループが考慮されます。0が指定された場合は、すべての物理設定オブジェクトが対象となります。

varで指定された変数に結果が代入されます。何らかのエラーが発生した場合は、マイナス値が代入されます。
線分に衝突するオブジェクトがあった場合は、そのオブジェクトIDが代入されます。何も衝突するオブジェクトがなかった場合は、0が代入されます。
衝突があった場合は、さらにobjidで指定されたオブジェクトのノードワーク値(work,work2)に詳細な情報が格納されます。
ノードワーク値は、getwork及びgetwork2命令により取得することができます。それぞれに設定される内容は以下の通りです。

	ノードワーク値       | 設定される内容
	--------------------------------------------------------------
	work                   衝突が発生したX,Y,Z座標
	work2                  衝突した面の法線ベクトルX,Y,Z値

板ノード(gpplateで生成)との衝突は正しく判定されないことがあるため、衝突のテストを行う際には厚みのある物体(箱など)を使用するようにしてください。
モデルではなく単純な線(ベクトル)に衝突するかどうかは、gppraytest命令によって調べることが可能です。

関連項目

gppcontactオブジェクトの物理衝突情報を作成する(hgimg4)
setcoliオブジェクトのコリジョン設定(HGIMG3/HGIMG4共通)
getcoliオブジェクトのコリジョン判定(HGIMG3/HGIMG4共通)
getworkworkグループ情報を取得(HGIMG3/HGIMG4共通)
getwork2ノードワーク値2を取得(hgimg4)
gppraytestベクトル上の物理衝突情報を取得する(hgimg4)

サンプル逆引き (1)

physics_3.hsp

情報

プラグイン / モジュールhgimg4
バージョン3.7
作成日2025/07/08
著作者onitama
URLhttps://hsp.tv/make/hgimg4.html
備考hgimg4.asまたはhgimg4dx.asをインクルードすること。
タイプ拡張命令
グループ拡張画面制御命令
対応環境
  • Windows 版 HSP
移植のヒントWindows/Linux/android/iOS等HGIMG4をサポートするシステム上で動作します。
Windowsの場合は、OpenGL3.1以降/DirectX9が必要です。
hs ファイルhsphelp\hgimg4.hs