3Dプログラミング基本 2-7

レイピッキングによる当たり判定(すべり有り)

交差することが分かったら、次は衝突位置の検出をしてみる。

衝突位置の検出は RaypicktoMesh()の第2引数で変数アドレスを渡せばそこに格納されるが、

滑りのあるなしで格納される位置が異なるので注意しよう。


↓滑りモードがなしの場合は、純粋に衝突した位置が格納される。

滑りモードなし

↓滑りモードが有りの場合は、衝突部分からさらに衝突に影響無いベクトルだけ進んだ位置が格納される。

滑りモード有り

■実際のコーディング

簡単にするならば、現在位置を格納する変数 g_pos を第2引数に渡せばよい

これで物体の中には入らなくなる。

//  レイピックによる衝突判定							
if( RaypicktoMesh( false , &g_pos ,g_beforepos,g_pos,g_mesh2->GetMesh(),g_matrix2 ))								
{								
	g_hitFlag = true;							
}								
else								
{								
	g_hitFlag = false;							
}											
            

●2行めの[ if( RaypicktoMesh( false , &g_pos &g_pos,g_beforepos,g_pos,g_mesh2->GetMesh(),g_matrix2 ]

が処理を変更した箇所である。


※実際には3D空間の当たり判定は滑りがないと使い物にならないことが多いので、

第1引数のフラグをtrueに入れ替えて動作を確認して欲しい。

※ただし、少ししか滑りません。

2-7-2.動作確認

↓ボックスに埋まらなくなれば完了です。


2-7-2 動作確認

> 完成例の実行ファイルはここからダウンロード

▲TOP

>「2-8 レイピッキングによる当たり判定(地面)」へ続く