Ejemplo n.º 1
0
    public void Configure(SpawnConfig config, EnemyTarget target, Wave wave, PrecalculatedPath path)
    {
        // just for reference
        currentConfig = config;
        currentWave   = wave;
        color         = config.color;

        spriteRenderer.sprite = sprites.GetSprite(currentConfig.kind);
        switch (currentConfig.color)
        {
        case ColorType.Red:
            spriteRenderer.color = Color.red;
            gameObject.layer     = LayerMask.NameToLayer("EnemyRed");
            break;

        case ColorType.Green:
            spriteRenderer.color = Color.green;
            gameObject.layer     = LayerMask.NameToLayer("EnemyGreen");
            break;

        case ColorType.Blue:
            spriteRenderer.color = Color.blue;
            gameObject.layer     = LayerMask.NameToLayer("EnemyBlue");
            break;
        }

        health = currentConfig.health;

        spinner.speed = currentConfig.spinSpeed;

        pathFollower.speed  = currentConfig.walkSpeed;
        pathFollower.target = target;
        pathFollower.UpdatePath(path.path, path.calculatedAt);
    }
Ejemplo n.º 2
0
    private PrecalculatedPath GetPathToTarget(GameObject from)
    {
        PrecalculatedPath precalced;

        if (!precalculatedPaths.TryGetValue(@from, out precalced))
        {
            precalced = new PrecalculatedPath
            {
                path         = target.FindPathFrom(@from.transform.position),
                calculatedAt = Time.time
            };
            precalculatedPaths.Add(from, precalced);
        }

        if (grid.HasChangedSince(precalced.calculatedAt))
        {
            precalculatedPaths.Remove(from);
            return(GetPathToTarget(from));
        }

        return(precalced);
    }