表示テーマ
Collision Component
接触を判定する形状・衝突タイプ・押し戻しを設定します。
設定する手順
- 形状を選び、同じGameObjectのRigidbodyと組み合わせます。
- SceneViewまたはGameViewで結果を確認します。
- 編集中のSceneまたはPrefabを保存します。
項目の説明
| 項目 | C#名 | 型 | 操作 | 定義時の初期値 | 意味 |
|---|---|---|---|---|---|
| 有効 | Enabled | bool | 読取・変更 | true | このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。 |
| 静的 | IsStatic | bool | 読取・変更 | false | 形状を固定物として扱います。 |
| 押し戻し | EnablePushback | bool | 読取・変更 | true | 接触時の押し戻しを有効にします。 |
| TypeMask | TypeMask | uint | 読取・変更 | 1u | 衝突タイプをbitで指定します。描画Layerとは別です。 |
Inspectorの設定と使い方
「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。
| 設定・操作 | 編集場所 | C#の入口 | 意味・使い方 |
|---|---|---|---|
| Componentの有効・静的・押し戻し・衝突タイプ | Editor / C# | Enabled / IsStatic / EnablePushback / TypeMask | Component全体を判定へ参加させるか、固定物として扱うか、接触時に押し戻すかを指定します。TypeMaskはプロジェクトの衝突設定で定義したbitで、描画レイヤーとは異なります。 |
| 形状:タイプ | Editor / C# | Shape | Shape.TypeでCircle2D・Quad2D・Sphere3D・AABB3D・OBB3D・Capsule2D・Capsule3Dを選びます。1つのCollisionにつき形状は1つです。描画Meshから自動生成するMesh Colliderではありません。 |
| 形状:有効・コールバックのみ | Editor / C# | Shape | Shape.Enabledは形状自身の有効状態です。Shape.IsTrigger=trueは押し戻さず接触通知だけを受ける指定で、拾い物・チェックポイント・侵入範囲に使います。 |
| 形状:回転の使用・オフセット・回転 | Editor / C# | Shape | Shape.UseTransformRotationでTransform回転を含めるかを決め、OffsetとRotationDegreesで追加の位置・回転を指定します。RotationDegreesは度数です。Capsule2DではXY位置とZ回転を使います。 |
| Circle2D・Sphere3D:半径 | Editor / C# | Shape | Shape.Radiusで円・球の半径を指定します。サイズではなく中心から外周までの長さで、実際の判定にはTransformのScaleも影響します。 |
| Quad2D:半サイズ・回転四角 | Editor / C# | Shape | HalfSize2Dは全幅・全高の半分です。RotatedQuadを有効にすると回転した矩形として扱います。幅2・高さ1なら半サイズは(1, 0.5)です。 |
| AABB3D・OBB3D:半サイズ | Editor / C# | Shape | HalfExtents3Dは全サイズの半分です。AABBはWorldの軸に沿った箱、OBBは回転する箱です。回転した壁や箱へ判定を合わせたい場合はOBBと回転設定を確認します。 |
| Capsule2D:サイズ・方向 | Editor / C# | Shape | CapsuleSize2Dはカプセル全体の幅・高さです。CapsuleAxisはX=横、Y=縦で、3D用の半径・高さとは別の値を使います。 |
| Capsule3D:半径・高さ・方向 | Editor / C# | Shape | Radiusは胴の半径、CapsuleHeightは両端の丸みを含む全高、CapsuleAxisはローカル長軸です。全高が直径より小さい場合、中央の線分がなくなって球に近い形になります。 |
| 接触状態・接触コールバック | C#のみ | IsColliding | IsCollidingは現在frameの接触状態です。開始・継続・終了を使い分けたいときはMonoBehaviourのOnCollisionEnter・OnCollisionStay・OnCollisionExitを使い、引数Collisionから相手や接触点を取得します。 |
初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。
C#から使う
操作型はCollisionComponentです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。
実用例:Playerだけに反応する拾い物を作る
このScriptがSphere3DのTriggerを設定します。Playerタグのある相手にも3DのCollisionを用意し、衝突設定で接触する組み合わせにします。
cs
using NEMEngine;
public sealed class TriggerPickup : MonoBehaviour {
[SerializeField, Min(0.01f)] private float radius = 0.75f;
private bool collected;
void Awake() {
// 物体を押し戻さず、接触通知だけを受ける球を用意
var collider = GetComponent<CollisionComponent>() ?? AddComponent<CollisionComponent>();
collider.Enabled = true;
collider.Shape.Type = ColliderShapeType.Sphere3D;
collider.Shape.Enabled = true;
collider.Shape.Radius = radius;
collider.Shape.IsTrigger = true;
}
void OnCollisionEnter(Collision collision) {
// Player以外の接触と、破棄適用前の重複取得を除外
if (collected || collision.gameObject == null || !collision.gameObject.CompareTag("Player")) return;
collected = true;
// 所持数や得点を加える処理はこの位置へ接続
Debug.Log("アイテムを取得しました");
NEMEngine.Object.Destroy(gameObject);
}
}設定用・関連するC#型
選択値(Enum)
| 型・各値の詳説 | 使える値 |
|---|---|
| CapsuleAxis | X / Y / Z |
| ColliderShapeType | AABB3D / Capsule2D / Capsule3D / Circle2D / OBB3D / Quad2D / Sphere3D |
CollisionComponent
| 宣言・詳説 | 種類・操作 | 役割 |
|---|---|---|
public bool EnablePushback | プロパティ(読取・変更) | 接触時の押し戻しを有効にします。 |
public bool Enabled | プロパティ(読取・変更) | このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。 |
public static CollisionComponent FromEntity(GameObject gameObject) | 関数 | 既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。 |
public bool IsColliding | プロパティ(読取専用) | 現在フレームに接触しているか |
public bool IsStatic | プロパティ(読取・変更) | 形状を固定物として扱います。 |
public CollisionComponent.CollisionShapeRef Shape | プロパティ(読取専用) | 発生形状または粒子を描く形状を選びます。設定を持つ型の説明も確認してください。 |
public uint TypeMask | プロパティ(読取・変更) | 衝突タイプをbitで指定します。描画Layerとは別です。 |
public static int componentTypeID | プロパティ(読取専用) | 組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。 |
CollisionComponent.CollisionShapeRef
| 宣言・詳説 | 種類・操作 | 役割 |
|---|---|---|
public CapsuleAxis CapsuleAxis | プロパティ(読取・変更) | カプセルのローカル長軸です。2DではX=横・Y=縦、3DではX/Y/Zを選びます。 |
public float CapsuleHeight | プロパティ(読取・変更) | Capsule3Dの両端の丸みを含む全高です。 |
public Vector2 CapsuleSize2D | プロパティ(読取・変更) | Capsule2D全体の幅・高さです。方向と組み合わせて縦横を指定します。 |
public bool Enabled | プロパティ(読取・変更) | この形状の判定を有効にします。CollisionComponent全体のEnabledとは別です。 |
public Vector3 HalfExtents3D | プロパティ(読取・変更) | AABB3D・OBB3Dの全幅・全高・全奥行きの半分です。 |
public Vector2 HalfSize2D | プロパティ(読取・変更) | Quad2Dの全幅・全高の半分です。 |
public bool IsTrigger | プロパティ(読取・変更) | trueなら押し戻さず、接触コールバックだけを発行します。侵入範囲や拾い物に使います。 |
public Vector3 Offset | プロパティ(読取・変更) | Transformから形状中心をずらす位置です。Capsule2DではXY成分を使います。 |
public float Radius | プロパティ(読取・変更) | Circle2D・Sphere3D・Capsule3Dの半径です。Capsule2Dの全体サイズとは別です。 |
public bool RotatedQuad | プロパティ(読取・変更) | Quad2Dを回転する矩形として扱うかを指定します。 |
public Vector3 RotationDegrees | プロパティ(読取・変更) | 形状へ加える回転を度数で指定します。Capsule2DではZ成分を使います。 |
public ColliderShapeType Type | プロパティ(読取・変更) | 判定する形状です。2Dの円・四角・カプセル、3Dの球・AABB・OBB・カプセルから選び、該当する寸法を設定します。 |
public bool UseTransformRotation | プロパティ(読取・変更) | 形状の向きへ所有GameObjectのTransform回転を含めるかを指定します。 |
継承する共通操作:Component
継承する共通操作:Object
使用時の注意
描画Meshを置くだけではPhysicsのColliderになりません。Triggerと押し戻しの違いを確認します。
Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。