Exemplo n.º 1
0
    private PlatformInfo PlaceNextPlatform(System.Random rand, LevelGeneratorParams p, PlatformInfo prevPlatform, float progress)
    {
        Vector2 prevPlatformEndpoint = prevPlatform.GetEndPoint();
        float   spacing = Mathf.Lerp(p.minSpacing, p.maxSpacing, (float)rand.NextDouble());
        float   x       = prevPlatformEndpoint.x + spacing;

        float offsetY   = Mathf.Lerp(p.minOffsetY, p.maxOffsetY, (float)rand.NextDouble());
        float y         = prevPlatformEndpoint.y + offsetY;
        float tiltAngle = Mathf.Lerp(p.minTiltAngle, p.maxTiltAngle, (float)rand.NextDouble());

        float avgLength = Mathf.Lerp(p.startAvgLength, p.endAvgLength, progress);
        float length    = avgLength + Mathf.Lerp(-p.lengthVariation, p.lengthVariation, (float)rand.NextDouble());

        Vector2 start = new Vector2(x, y);
        Vector2 end   = start + (Vector2)(Quaternion.Euler(0, 0, tiltAngle) * new Vector2(length, 0));

        return(PlatformInfo.FromEndpoints(start, end));
    }