public Spell( Enemy targetEnemy, Tower tower, float movementSpeed ) { this.targetEnemy = targetEnemy; this.tower = tower; this.movementSpeed = movementSpeed; }
private void Awake() { Instance = this; }
public void AddEnemyToList(Enemy script) { _enemies.Add(script); }
public EnemyDiedEvent(Enemy enemy) { Enemy = enemy; }
public void Enter(Enemy enemy) { throw new NotImplementedException(); }
public static void PutEnemyToPool(Enemy target) { _poolsEnemyDict[target.name].Push(target); target.transform.parent = _parentForDeactivatedGO; target.gameObject.SetActive(false); }
private Vector3 CalculateVectorFromTowerToEnemy( Enemy enemy ) { // Calculate vector from top of the tower to the enemy. Vector3 enemyPos = enemy.gameObject.transform.position; Vector3 towerPos = this.gameObject.transform.position + new Vector3(0, 1, 0); Vector3 towerToEnemyDir = enemyPos - towerPos; return towerToEnemyDir; }
public void Shoot( Enemy enemy ) { if (enemy == null) { return; } float towerToEnemyDistance = 0.0f; // Calculate vector from top of the tower to the enemy. Vector3 towerToEnemyDir = CalculateVectorFromTowerToEnemy(enemy); Vector3 towerPos = this.gameObject.transform.position + new Vector3(0, 1, 0); towerToEnemyDistance = towerToEnemyDir.magnitude; Vector3 towerToEnemyDirNorm = towerToEnemyDir.normalized; // If the enemy is in range - shoot at him. if (towerToEnemyDistance <= range) { Spell newSpell = Instantiate(spell, towerPos, Quaternion.Euler(0, 0, 0)) as Spell; if( newSpell != null ) { newSpell.tower = this; newSpell.targetEnemy = enemy; newSpell.movementSpeed = 2; } } }
public void Reclaim(Enemy enemy) { Debug.Assert(enemy.OriginFactory == this, "Wrong factory reclaimed!"); Destroy(enemy.gameObject); }