When Ben created the “var sceneEnemies” in Tower, his became an array. Mine became a “class EnemyDamage.” Now I have 2 errors I can’t get rid of. How do I change it?
…
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tower : MonoBehaviour
{
//Parameters of each tower
[SerializeField] Transform objectToPan;
//[SerializeField] Transform targetEnemy;
[SerializeField] float attackRange = 40f;
[SerializeField] ParticleSystem projectileParticle;
//State of each tower
Transform targetEnemy;
void Update()
{
SetTargetEnemy();
if (targetEnemy)
{
objectToPan.LookAt(targetEnemy);
FireAtEnemy();
}
else
{
Shoot(false);
}
}
private void SetTargetEnemy()
{
var sceneEnemies = FindObjectOfType<EnemyDamage>();
if (sceneEnemies.Length == 0) { return; }
Transform closestEnemy = sceneEnemies[0].transform;
foreach (EnemyDamage testEnemy in sceneEnemies)
{
closestEnemy = GetClosest(closestEnemy, testEnemy.transform);
}
targetEnemy = closestEnemy;
}
private Transform GetClosest(Transform transformA, Transform transformB)
{
var disToA = Vector3.Distance(transform.position, transformA.position);
var disToB = Vector3.Distance(transform.position, transformB.position);
if (disToA < disToB)
{
return transformA;
}
return transformB;
}
private void FireAtEnemy()
{
float distanceToEnemy = Vector3.Distance(targetEnemy.transform.position, gameObject.transform.position);
if (distanceToEnemy <= attackRange)
{
Shoot(true);
}
else
{
Shoot(false);
}
}
private void Shoot(bool isActive)
{
var emmissionModule = projectileParticle.emission;
emmissionModule.enabled = isActive;
}
}
…