- AB間の相互作用を決める条件
- Collisionコンポーネント(コライダー)の「衝突」を発生させる
- Collisionコンポーネント(コライダー)の「重複」を発生させる
- AB間の応答タイプの相関性による相互作用から得られる情報
A->B
Aが受け取ることができる相互作用の情報について考えます。
🔗 参考リンク
Unreal Engineドキュメント
コリジョンの概要
BゲームオブジェクトのCollisionコンポーネントのIsTrigger | |||
ON | OFF | ||
AゲームオブジェクトのColliderコンポーネントのIsTrigger | ON | 「重複」 | 「重複」 |
OFF | 「重複」 | 「衝突」 |
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectA : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
Debug.Log("Object Collision A: " + collision.gameObject.name);
}
}
SphereBゲームオブジェクト用のObjectBコンポーネントを用意します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectB : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
Debug.Log("Object Collision B: " + collision.gameObject.name);
}
}
ObjectAコンポーネントとObjectBコンポーネントをそれぞれのゲームオブジェクトに追加して、先ほど作成したBounce Physic materialを追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectA : MonoBehaviour
{
void OnTriggerEnter(Collision collision)
{
Debug.Log("Object Trigger A: " + collision.gameObject.name);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectB : MonoBehaviour
{
void OnTriggerEnter(Collision collision)
{
Debug.Log("Object Trigger B: " + collision.gameObject.name);
}
}
SphereAのインスペクタです。 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectA : MonoBehaviour
{
void OnTriggerEnter(Collision collision)
{
Debug.Log("Object Trigger A: " + collision.gameObject.name);
}
void OnCollisionEnter(Collision collision)
{
Debug.Log("Object Collision A: " + collision.gameObject.name);
}
}
次に、SphereAの子のゲームオブジェクトSphereA'とSphereBとの「重複」について考えます。 Default | スタティックメッシュ エディタのスタティックメッシュに適用される設定値を使用します。 | |
NoCollision | コリジョンを無効にします | WorldStatic |
BlockAll | すべてのアクタをブロックします | WorldStatic |
OverlapAll | すべてのアクタをオーバーラップします | WorldStatic |
BlockAllDynamic | デフォルトでMovableに設定されたすべてアクタをブロックします | WorldDynamic |
OverlapAllDynamic | デフォルトでMovableに設定されたすべてのアクタをオーバーラップします | WorldDynamic |
Pawn | ポーンオブジェクト | Pawn |
Custom | Project Settings>Collisionで設定した独自のコリジョンのオブジェクトチャンネルを使用するときに使います |
BアクターのAアクターのオブジェクトチャンネルに対する応答タイプ | ||||
Ignore | Overlap | Block | ||
AアクターのBアクターのオブジェクトチャンネルに対する応答タイプ | Ignore | 無視 | 無視 | 無視 |
Overlap | 無視 | 重複 | 重複 | |
Block | 無視 | 重複 | 衝突 |
子のアクターの「衝突」について
次に、SphereAの子のSphereA’アクタとSphereBとの「衝突」について考えます。BアクターのAアクターのオブジェクトチャンネルに対する応答タイプ | ||||
Ignore | Overlap | Block | ||
AアクターのBアクターのオブジェクトチャンネルに対する応答タイプ | Ignore | 無視 | 無視 | 無視 |
Overlap | 無視 | 重複 | 重複 | |
Block | 無視 | 重複 | 衝突 |
アクタの「重複」(Actor Begin Overlapイベントノード)
WorldDynamicとは、TransformのMobilityがMovableなアクタのことを指し、WorldStaticは、Staticなアクタのことを指します。SphereがMy Comp | PrimitiveComponent - ヒットされた実行中のアクタ上のコンポーネント。 |
Other | Actor - コリジョンに関わるもう一方のアクタ。 |
Other Comp | PrimitiveComponent - ヒットされたコリジョンに関わるもう一方のアクタ上のコンポーネント。 |
Self Moved | Boolean - 別のオブジェクトの移動からヒットを受けた際に使用し (false の場合)、Hit Normal と Hit Impact を調整して、ヒット対象となったオブジェクトに対するもう一方のオブジェクトからの力を示します。 |
Hit Location | Vector - 衝突する 2 つのアクタ間のコンタクト位置。 |
Hit Normal | Vector - コリジョンの方向です。 |
Normal Impulse | Vector - アクタが衝突する力。 |
Hit | Struct Hit 内に収集されたすべてのデータである HitResult を引っ張り出し、この結果を「細分化して」個々のデータへのアクセスすることができます。 |