ベクトル上の物理衝突情報を取得する
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共通) |
| getwork | workグループ情報を取得 | (HGIMG3/HGIMG4共通) |
| getwork2 | ノードワーク値2を取得 | (hgimg4) |
| gppsweeptest | モデルを指定ベクトルに移動させた際の物理衝突情報を取得する | (hgimg4) |
| プラグイン / モジュール | hgimg4 |
| バージョン | 3.7 |
| 作成日 | 2025/07/08 |
| 著作者 | onitama |
| URL | https://hsp.tv/make/hgimg4.html |
| 備考 | hgimg4.asまたはhgimg4dx.asをインクルードすること。 |
| タイプ | 拡張命令 |
| グループ | 拡張画面制御命令 |
| 対応環境 |
|
| 移植のヒント | Windows/Linux/android/iOS等HGIMG4をサポートするシステム上で動作します。
Windowsの場合は、OpenGL3.1以降/DirectX9が必要です。 |
| hs ファイル | hsphelp\hgimg4.hs |