gppraytest

ベクトル上の物理衝突情報を取得する

gppraytest var,objid,distance,group

var      : 検出したオブジェクトID値が代入される変数名
objid(0)      : オブジェクトID
distance(100) : ベクトルの長さ
group(0)      : 対象となるコリジョングループ(0=すべて)

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

解説

物理設定を行なった3Dオブジェクトの中で、指定した線(ベクトル)に衝突するオブジェクトの情報を取得します。
objidで指定した3Dノードを持つオブジェクトを基点として、オブジェクトの向いている方向からdistanceで指定された距離の間で最初に衝突する3DオブジェクトのオブジェクトIDを調査します。
objidで指定されるオブジェクトは、物理設定されている必要はありません。カメラやnullノード等であっても問題ありません。
groupパラメーターで、衝突の対象となるコリジョングループを指定することができます。objidで指定したオブジェクトに設定されたコリジョン設定は参照されないので注意してください。
groupパラメーターを省略するか0が指定された場合は、すべての物理設定オブジェクトが対象となります。

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

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

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

関連項目

gppcontactオブジェクトの物理衝突情報を作成する(hgimg4)
getcoliオブジェクトのコリジョン判定(HGIMG3/HGIMG4共通)
getworkworkグループ情報を取得(HGIMG3/HGIMG4共通)
getwork2ノードワーク値2を取得(hgimg4)
gppsweeptestモデルを指定ベクトルに移動させた際の物理衝突情報を取得する(hgimg4)

サンプル逆引き (1)

physics_2.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