Привет можешь немного доработать: некоторые осколки инвертированные а также я хочу чтобы можно было регулировать количество осколков и также чтобы осколки были пирамидальной формы но немного измененные. using System.Collections.Generic;
using UnityEngine;

public class ObjectDestruction : MonoBehaviour
{
    public float explosionForce = 500f;
    public float explosionRadius = 5f;
    public float thickness = 0.1f; // Толщина объемного треугольного осколка

    public void DestroyObject()
    {
        MeshFilter meshFilter = GetComponent<MeshFilter>();
        MeshRenderer meshRenderer = GetComponent<MeshRenderer>();

        if (meshFilter == null || meshRenderer == null)
        {
            Debug.LogError("Object does not have MeshFilter or MeshRenderer");
            return;
        }

        Mesh originalMesh = meshFilter.mesh;
        Vector3[] vertices = originalMesh.vertices;
        int[] triangles = originalMesh.triangles;
        Vector3 originalObjectPosition = transform.position;

        for (int i = 0; i < triangles.Length; i += 3)
        {
            // Создаем новый объект для объемного треугольного осколка
            GameObject chunkObject = new GameObject("VolumetricTriangleChunk");
            chunkObject.transform.position = originalObjectPosition;
            chunkObject.transform.rotation = transform.rotation;
            chunkObject.transform.localScale = transform.localScale;

            Mesh chunkMesh = new Mesh();
            Vector3[] chunkVertices = new Vector3[12];
            int[] chunkTriangles = new int[24];

            // Верхний треугольник
            chunkVertices[0] = vertices[triangles[i]];
            chunkVertices[1] = vertices[triangles[i + 1]];
            chunkVertices[2] = vertices[triangles[i + 2]];

            // Нижний треугольник
            chunkVertices[3] = vertices[triangles[i]] - Vector3.forward * thickness;
            chunkVertices[4] = vertices[triangles[i + 1]] - Vector3.forward * thickness;
            chunkVertices[5] = vertices[triangles[i + 2]] - Vector3.forward * thickness;

            // Связующие ребра
            chunkVertices[6] = chunkVertices[0];
            chunkVertices[7] = chunkVertices[1];
            chunkVertices[8] = chunkVertices[1];
            chunkVertices[9] = chunkVertices[2];
            chunkVertices[10] = chunkVertices[2];
            chunkVertices[11] = chunkVertices[0];

            // Верхний треугольник
            chunkTriangles[0] = 0;
            chunkTriangles[1] = 1;
            chunkTriangles[2] = 2;

            // Нижний треугольник
            chunkTriangles[3] = 3;
            chunkTriangles[4] = 5;
            chunkTriangles[5] = 4;

            // Боковые грани
            chunkTriangles[6] = 0;
            chunkTriangles[7] = 3;
            chunkTriangles[8] = 4;

            chunkTriangles[9] = 0;
            chunkTriangles[10] = 4;
            chunkTriangles[11] = 1;

            chunkTriangles[12] = 1;
            chunkTriangles[13] = 4;
            chunkTriangles[14] = 5;

            chunkTriangles[15] = 1;
            chunkTriangles[16] = 5;
            chunkTriangles[17] = 2;

            chunkTriangles[18] = 2;
            chunkTriangles[19] = 5;
            chunkTriangles[20] = 3;

            chunkTriangles[21] = 2;
            chunkTriangles[22] = 3;
            chunkTriangles[23] = 0;

            chunkMesh.vertices = chunkVertices;
            chunkMesh.triangles = chunkTriangles;
            chunkMesh.RecalculateNormals();
            chunkMesh.RecalculateBounds();

            MeshFilter chunkMeshFilter = chunkObject.AddComponent<MeshFilter>();
            chunkMeshFilter.mesh = chunkMesh;

            MeshRenderer chunkMeshRenderer = chunkObject.AddComponent<MeshRenderer>();
            chunkMeshRenderer.material = meshRenderer.material;

            Rigidbody rb = chunkObject.AddComponent<Rigidbody>();
            rb.AddExplosionForce(explosionForce, transform.position, explosionRadius);

            MeshCollider meshCollider = chunkObject.AddComponent<MeshCollider>();
            meshCollider.convex = true;
        }

        // Делаем оригинальный объект невидимым (или можно уничтожить)
        gameObject.SetActive(false);
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.relativeVelocity.magnitude > 5f)
        {
            DestroyObject();
        }
    }
}