Complete C# Unity Developer 3D Lesson 147

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

}

Hi Jim,

Have you already compared your code to the Lecture Project Changes which can be found in the Resources of this lecture? Take a very close look at the method he used behind his variable to find enemies in his scene. Can you spot the difference?

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

Privacy & Terms