Unity Visual Scripting 入門第6回:Collisionで当たり判定を付与する方法

この記事はVisual Scripting 入門の第6回です。前回の記事は下記のリンクから確認できます。

今回はCollisionを使用して当たり判定を付与する方法を解説します。

Collisionを利用した当たり判定

Hierarchyに空のGameObjectを追加し、[HitManager]という名前にします。

[HitManager]

[HitManager]

[HitManager]にScriptMachineをアタッチし、新しいグラフをMacrosというフォルダに作成し、そこに保存します。

グラフの名前は[HitGraph]とします。

[HitManager]にScriptMachineをアタッチ。Macrosフォルダに保存。  グラフの名前を[HitGraph]に変更。

[HitManager]にScriptMachineをアタッチ。Macrosフォルダに保存。 グラフの名前を[HitGraph]に変更。

Hierarchyの+ボタンをクリックし、3DObjectからCubeを作成します。名前を[TopObj]にします。

[TopObj]

[TopObj]

[TopObj]のPositionは(0, 5, 0)に設定し、AddComponentからRigidBodyをアタッチします。

Box ColliderのIs Triggerのチェックを外しておきます。

RigidBodyをアタッチ。  Box ColliderのIs Triggerのチェックを外す。

RigidBodyをアタッチ。 Box ColliderのIs Triggerのチェックを外す。

再度、HierarchyにCubeを追加し、名前を[UnderObj]にします。

[UnderObj]のPositionは(0, 0, 0)と設定します。

[UnderObj], (0, 0, 0)

[UnderObj], (0, 0, 0)

準備は完了です。

[HitManager]のHitGraphのVariableにGameObject型の変数[HitObj]を追加し、ValueにTopObjを代入します。

ValueにTopObjを代入

ValueにTopObjを代入

Graph EditorにOn Collision Enter, Debug.Log, String Literalを追加し、Variableから[HitObj]を追加します。

On Collision Enter, Debug.Log, String Literalを追加

On Collision Enter, Debug.Log, String Literalを追加


On Collision Enter, Debug.Log, String Literalを追加

On Collision Enter, Debug.Log, String Literalを追加


On Collision Enter, Debug.Log, String Literalを追加

On Collision Enter, Debug.Log, String Literalを追加

このColliderが当たり判定といわれるものになります。

Collider

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に表示

接触したオブジェクトの情報[UnderObj]をConsoleに表示

オブジェクト同士が接触したときに接触したオブジェクトの情報[UnderObj]をConsoleに表示できます。

Triggerを利用した当たり判定

[TopObj]のBox ColliderのIs Triggerのチェックをいれます。

Is Triggerにチェック

Is Triggerにチェック

Is Triggerにチェックを入れることによって、オブジェクト同士がぶつからなくなり貫通します。

Graph EditorにOn Trigger Enterを追加します。

On Trigger Enterを追加

On Trigger Enterを追加

On Collision Enterの接続を切断し、以下のようにノードを接続します。

ノードを接続

ノードを接続

Triggerは接触しないので衝突時の地点や衝撃などの情報はありません。

On Trigger Enter Colliderがついているオブジェクト同士が触れたときに実行されるノードです。
On Trigger Stay Colliderがついているオブジェクト同士が接触している間ずっと場合に実行されます。
On Trigger Exit Colliderがついているオブジェクト同士が離れた時に実行します。

実行します。

接触したオブジェクトの情報「UnderObj」をConsoleに表示

接触したオブジェクトの情報「UnderObj」をConsoleに表示

オブジェクト同士が接触したときに接触したオブジェクトの情報「UnderObj」をConsoleに表示できます。

今回は当たり判定の作り方について紹介しました。

第6回はRaycastとListについて紹介します。

次回の記事は下記のリンクから確認できます。