示例#1
0
    void SpawnAVariantOfThisType(EnemyVariants variants)
    {
        Vector2 min = playArea.GetComponent <Renderer>().bounds.min;
        Vector2 max = playArea.GetComponent <Renderer>().bounds.max;

        Vector2 spawnPos = new Vector2();

        spawnPos.x = UnityEngine.Random.Range(min.x, max.x);
        spawnPos.y = UnityEngine.Random.Range(min.y, max.y);

        Collider2D coll   = Physics2D.OverlapCircle(spawnPos, 0.5f, playerMask);
        int        escape = 100;

        while (coll != null && escape > 0)
        {
            spawnPos.x = UnityEngine.Random.Range(min.x, max.x);
            spawnPos.y = UnityEngine.Random.Range(min.y, max.y);
            escape--;
        }

        List <EnemyVariant> availableVariants = variants.GetAvailableVariants(ScoreManager.score);
        int          r            = UnityEngine.Random.Range(0, availableVariants.Count);
        EnemyVariant enemyToSpawn = availableVariants[r];

        GameObject go = Instantiate(variants.templatePrefab, spawnPos, Quaternion.identity, enemyHolder);
        Enemy      e  = go.GetComponent <Enemy>();

        e.AbsorbVariantTraits(enemyToSpawn);
        enemiesOut.Add(go);
    }
示例#2
0
    public void AbsorbVariantTraits(EnemyVariant variant)
    {
        this.variant = variant;

        this.health = variant.health;
        this.speed  = variant.speed;
        this.damage = variant.damage;

        if (spriteRenderer == null)
        {
            spriteRenderer = GetComponentInChildren <SpriteRenderer>();
        }
        spriteRenderer.sprite = variant.sprite;
        spriteRenderer.color  = variant.tint;
        origColor             = variant.tint;
    }