この記事はVisual Scripting 入門の第6回です。前回の記事は下記のリンクから確認できます。
今回はCollisionを使用して当たり判定を付与する方法を解説します。
Collisionを利用した当たり判定
Hierarchyに空のGameObjectを追加し、[HitManager]という名前にします。
[HitManager]にScriptMachineをアタッチし、新しいグラフをMacrosというフォルダに作成し、そこに保存します。
グラフの名前は[HitGraph]とします。
Hierarchyの+ボタンをクリックし、3DObjectからCubeを作成します。名前を[TopObj]にします。
[TopObj]のPositionは(0, 5, 0)に設定し、AddComponentからRigidBodyをアタッチします。
Box ColliderのIs Triggerのチェックを外しておきます。
再度、HierarchyにCubeを追加し、名前を[UnderObj]にします。
[UnderObj]のPositionは(0, 0, 0)と設定します。
準備は完了です。
[HitManager]のHitGraphのVariableにGameObject型の変数[HitObj]を追加し、ValueにTopObjを代入します。
Graph EditorにOn Collision Enter, Debug.Log, String Literalを追加し、Variableから[HitObj]を追加します。
このColliderが当たり判定といわれるものになります。
On Collision Enter | Colliderがついているオブジェクト同士がぶつかったときに実行されるノードです。 |
On Collision Stay | Colliderがついているオブジェクト同士が接触している間ずっと場合に実行されます。 |
On Collision Exit | Colliderがついているオブジェクト同士が離れた時に実行します。 |
左のポートは接触するオブジェクトを接続します。
右のポートはColliderにはあたったオブジェクトの情報が格納されています。
Contactsには衝突したときの衝突地点と法線、衝突した二つのコライダーが格納されています。
Impulseには衝突したときの衝撃が格納されています。
Relative Velocityには衝突したときの相手の相対速度が入っています。
Dateには相手の情報が格納されています。
以下のようにノードを接続します。今回はHitObjに何かぶつかったときにOn Collision Enterの処理をさせます。
実行します。
オブジェクト同士が接触したときに接触したオブジェクトの情報[UnderObj]をConsoleに表示できます。
Triggerを利用した当たり判定
[TopObj]のBox ColliderのIs Triggerのチェックをいれます。
Is Triggerにチェックを入れることによって、オブジェクト同士がぶつからなくなり貫通します。
Graph EditorにOn Trigger Enterを追加します。
On Collision Enterの接続を切断し、以下のようにノードを接続します。
Triggerは接触しないので衝突時の地点や衝撃などの情報はありません。
On Trigger Enter | Colliderがついているオブジェクト同士が触れたときに実行されるノードです。 |
On Trigger Stay | Colliderがついているオブジェクト同士が接触している間ずっと場合に実行されます。 |
On Trigger Exit | Colliderがついているオブジェクト同士が離れた時に実行します。 |
実行します。
オブジェクト同士が接触したときに接触したオブジェクトの情報「UnderObj」をConsoleに表示できます。
今回は当たり判定の作り方について紹介しました。
第6回はRaycastとListについて紹介します。
次回の記事は下記のリンクから確認できます。