Exemple #1
0
    private void ChooseActionPoints(System.Random rand, LevelGeneratorParams p, PlatformInfo plat)
    {
        float earlyLandMargin = Mathf.Lerp(p.minEarlyLandMargin, p.maxEarlyLandMargin, (float)rand.NextDouble());
        float lateJumpMargin  = Mathf.Lerp(p.minLateJumpMargin, p.maxLateJumpMargin, (float)rand.NextDouble());

        plat.landPoint = Vector2.Lerp(plat.GetStartPoint(), plat.GetEndPoint(), earlyLandMargin);
        plat.jumpPoint = Vector2.Lerp(plat.GetStartPoint(), plat.GetEndPoint(), 1 - lateJumpMargin);
    }
Exemple #2
0
    public void Construct(PlatformInfo platform, bool alwaysOn)
    {
        this.platform = platform;
        this.alwaysOn = alwaysOn;

        transform.localPosition = platform.GetStartPoint();
        transform.localScale    = new Vector3(platform.GetLength(), 1, 1);
        float angle = Vector3.SignedAngle(Vector3.right, platform.GetEndPoint() - platform.GetStartPoint(), Vector3.back);

        transform.localRotation = Quaternion.AngleAxis(angle, Vector3.back);
    }
Exemple #3
0
 void OnDrawGizmos()
 {
     if (platform != null)
     {
         Vector3 start = gameObject.transform.parent.TransformPoint(platform.GetStartPoint());
         Vector3 end   = gameObject.transform.parent.TransformPoint(platform.GetEndPoint());
         Vector3 land  = gameObject.transform.parent.TransformPoint(platform.GetLandPoint());
         Vector3 jump  = gameObject.transform.parent.TransformPoint(platform.GetJumpPoint());
         Gizmos.DrawWireSphere(start, 0.1f);
         Gizmos.DrawWireSphere(end, 0.1f);
         Gizmos.DrawLine(land, land + Vector3.up * 2);
         Gizmos.DrawLine(jump, jump + Vector3.up * 2);
     }
 }
Exemple #4
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));
    }