Wie kann ich bei Unity einem 2D generierten Mesh einen Collider geben?

1 Antwort

private void GenCollider()
{
    EdgeCollider2D edgeCollider = GrassMashObject.AddComponent<EdgeCollider2D>();
    edgeCollider.sharedMaterial = GrassPhysics;

    List<Vector2> points = new List<Vector2>();

    for (int y = 0; y <= yHight; y++)
    {
        for (int x = 0; x < WorldSize; x++) // Reduziert um 1, um Überlappung der Linien zu vermeiden
        {
            Vector2 startPoint = new Vector2(x, y - (WorldSize / 4f));

            float perlin1 = (float)x / PerlinScale;
            float perlin2 = (float)y / PerlinScale;
            float perlin3 = Mathf.PerlinNoise(perlin1, perlin2);
            float perlin4 = Mathf.PerlinNoise(perlin1 * 2, perlin2 * 2);
            float perlin5 = Mathf.PerlinNoise(perlin1 / 2, perlin2 / 2);
            float height = y + ((perlin3 + perlin4 + perlin5) * PerlinHeight);

            Vector2 endPoint = new Vector2(x + 1, height); // Nächster Punkt

            points.Add(startPoint);
            points.Add(endPoint);
        }
    }

    edgeCollider.points = points.ToArray();
}

Woher ich das weiß:Hobby – Ich beschäftige mich in meiner Freizeit viel mit Computern