Example #1
0
        private void GenerateColliders()
        {
            PPart.ClearColliderHolder();
            // The first corner is at angle=0.
            // We want to start the colliders in between the corners.
            float offset = (360f / numSides) / 2 - 90f;

            for (int i = 0; i < numSides; i++)
            {
                var go   = new GameObject($"Mesh_Collider_{i}");
                var coll = go.AddComponent <MeshCollider>();
                go.transform.SetParent(PPart.ColliderHolder.transform, false);
                coll.convex     = true;
                coll.sharedMesh = GenerateColliderMesh();
                var orientation = Quaternion.AngleAxis(90 + offset + (360f * i / numSides), Vector3.up);
                go.transform.localRotation *= orientation;
                go.transform.localPosition  = Vector3.zero;
            }
        }
Example #2
0
        private void GenerateColliders()
        {
            PPart.ClearColliderHolder();
            // The first corner is at angle=0.
            // We want to start the capsules in between the corners.
            float   offset   = (360f / numSides) / 2;
            Vector3 refPoint = new Vector3(MajorRadius, 0, 0);

            for (int i = 0; i < numSides; i++)
            {
                var go   = new GameObject($"Mesh_Collider_{i}");
                var coll = go.AddComponent <MeshCollider>();
                go.transform.SetParent(PPart.ColliderHolder.transform, false);
                coll.convex     = true;
                coll.sharedMesh = GenerateColliderMesh();
                var prevCornerOrient = Quaternion.AngleAxis(360f * i / numSides, Vector3.up);
                var prevCornerPos    = prevCornerOrient * refPoint;
                var nextCornerOrient = Quaternion.AngleAxis(360f * (i + 1) / numSides, Vector3.up);
                var nextCornerPos    = nextCornerOrient * refPoint;
                var orientation      = Quaternion.AngleAxis(90 + offset + (360f * i / numSides), Vector3.up);
                go.transform.localRotation *= orientation;
                go.transform.localPosition  = (prevCornerPos + nextCornerPos) / 2;
            }
        }