オブジェクト0とそれ以外のオブジェクトの当たり判定を。

この左画面でクリックすれば以下の赤字のスクリプトがコピーされるので、右プログラミング画面で赤矢印の右側へ貼り付けてください。

	foreach hsid

		if ( hsid(cnt) == null || hsid(0) == hsid(cnt) ) : continue

		E3DChkConflict2 hsid(0), -1, hsid(cnt), -1, confflag, confstat

		if (confflag != 0){

			mmload dir_cur+"\\Catch.wav", 2, 2

			mmplay 2

			E3DSetPos hsid(cnt), rnd(4000)-rnd(4000),0,rnd(4000)-rnd(4000)

		}

	loop

実行ボタンを押してください。

「foreach hsid」〜「loop」の間を、hsid配列の要素があるだけ繰り返します。

「if ( hsid(cnt) == null || hsid(0) == hsid(cnt) ) : continue」で、hsid配列の要素がない場合と自分自身の場合は、foreach〜loop間のループをやり直します。

「E3DChkConflict2 p1,p2,p3,p4,p5,p6」で、2つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。
[p1]オブジェクト0である形状データを識別するid
[p2]p1のモデル中のパーツの番号
[p3]形状データを識別するid
[p4]p3のモデル中のパーツの番号
[p5]p1, p3で識別される形状同士が、衝突している場合は1が、衝突していない場合は0がセットされる。
[p6]p1が視野外にある場合は、inviewflagに1を、p2が視野外にある場合は、inviewflagに2を、両方とも視野外の場合は、inviewflagに3を、両方とも視野内の場合は、inviewflagに0を代入します。

もしp5が0でない、つまり重なっている場合。

「mmload "filename",p1,p2」で、サウンドファイル読み込み。
[p1]割り当てるバッファの番号
[p2]割り当てるモード。

「mmplay p1」で、サウンド再生します。
[p1]再生するバッファの番号

「E3DSetPos hsid(0),x,y,z」で、形状データを(x,y,z)に移動します。

ホームへ戻ります。