Вместо использования двусторонних материалов (которые будут визуализироваться дважды) вы можете просто перевернуть сетку (иначе говоря, инвертировать нормали).
Инвертирование нормалей выполняется путем взятия массива треугольников, который содержит индексы вершин, которые сеткаотносится к треугольникам рендеринга.
Простейший код, который делает это выглядит примерно так:
[RequireComponent(typeof(MeshFilter))]
public class MeshInverter : MonoBehaviour
{
void Start()
{
var meshFilter = GetComponent<MeshFilter>();
var triss = meshFilter.sharedMesh.triangles;
var normals=meshFilter.sharedMesh.normals;
for (int i=0;i<normals.Length;i++)
normals[i]=-normals[i];
for (int i = 0; i < triss.Length / 3; i++)
{
int temp = triss[i * 3 + 1];
triss[i * 3 + 1] = triss[i * 3];
triss[i * 3] = temp;
}
Mesh mesh=Instantiate(meshFilter.sharedMesh);
mesh.triangles=triss;
mesh.normals=normals;
meshFilter.mesh=mesh;
}
}
Это сделает внутреннюю часть капсулы видимой в режиме игры