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); }
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; }