i tried to get my soldier to attack enemy soldier when they are in range. but they only attack one or twice. then they just stand there .please help me, i tried everything i could find still cant fix it.
csharp** **using System.Collections;[/B] [B]using System.Collections.Generic;[/B] [B]using System.Linq;[/B] [B]using UnityEngine;[/B] [B]using UnityEngine.UIElements;[/B] [B][/B] [B]public class soldier : MonoBehaviour[/B] [B]{[/B] [B] public int maxHealth;[/B] [B] public int CurrentHealth;[/B] [B] public int damage;[/B] [B] public int armor;[/B] [B][/B] [B] public float fightDistance;[/B] [B] public float attackRadius;[/B] [B] public float nextAttackTime = 1;[/B] [B][/B] [B] public GameManager gamemanager;[/B] [B][/B] [B] public GameObject player;[/B] [B][/B] [B] enemySoldier closestEnemy = null;[/B] [B] void Start()[/B] [B] {[/B] [B] player = GameObject.FindGameObjectWithTag("player");[/B] [B] gamemanager = FindObjectOfType<GameManager>();[/B] [B][/B] [B] this.GetComponent<Animator>().SetTrigger("walking");[/B] [B][/B] [B][/B] [B] maxHealth = gamemanager.allyHealth ;[/B] [B] CurrentHealth = maxHealth;[/B] [B] }[/B] [B][/B] [B] // Update is called once per frame[/B] [B] void Update()[/B] [B] {[/B] [B][/B] [B] if(CurrentHealth <= 0)[/B] [B] {[/B] [B] Destroy(this.gameObject);[/B] [B] }[/B] [B] damage = gamemanager.allydamage;[/B] [B] armor = gamemanager.allyarmor;[/B] [B][/B] [B][/B] [B][/B] [B] FindClosestEnemy();[/B] [B][/B] [B][/B] [B] if (closestEnemy != null && Vector2.Distance(closestEnemy.transform.position, this.gameObject.transform.position) <= fightDistance)[/B] [B] {[/B] [B] Vector2 newPos = closestEnemy.transform.position;[/B] [B] this.gameObject.transform.position = Vector2.MoveTowards(this.transform.position, newPos, Time.deltaTime);[/B] [B] }[/B] [B] else[/B] [B] {[/B] [B] Vector2 newPos = player.transform.position;[/B] [B] this.gameObject.transform.position = Vector2.MoveTowards(this.transform.position, newPos, Time.deltaTime);[/B] [B] }[/B] [B][/B] [B] if(Vector2.Distance (closestEnemy.transform.position ,this.gameObject .transform .position )<= attackRadius && Time.time >= nextAttackTime)[/B] [B] {[/B] [B][/B] [B] this.GetComponent<Animator>().SetTrigger("attacking");[/B] [B][/B] [B] closestEnemy.GetComponent<enemySoldier>().CurrentHealth -= (damage - closestEnemy.GetComponent<enemySoldier>().armor);[/B] [B][/B] [B] nextAttackTime += Time.time;[/B] [B] }[/B] [B][/B] [B] }[/B] [B][/B] [B] public void FindClosestEnemy()[/B] [B] {[/B] [B] float distanceToClosesetEnemy = Mathf.Infinity;[/B] [B] [/B] [B] enemySoldier[] allEnemies = FindObjectsOfType<enemySoldier>();[/B] [B][/B] [B] foreach(enemySoldier currentEnemy in allEnemies)[/B] [B] {[/B] [B] float distanceBetweenThisAndEnemy = Vector2.Distance(currentEnemy.transform.position, this.gameObject.transform.position);[/B] [B] if(distanceBetweenThisAndEnemy <distanceToClosesetEnemy)[/B] [B] {[/B] [B] distanceToClosesetEnemy = distanceBetweenThisAndEnemy;[/B] [B] closestEnemy = currentEnemy;[/B] [B] }[/B] [B] }[/B] [B] }[/B] [B][/B] [B] public void OnDrawGizmos()[/B] [B] {[/B] [B] Gizmos.DrawWireSphere(this.gameObject.transform.position, fightDistance);[/B] [B] Gizmos.DrawWireSphere(this.gameObject.transform.position, attackRadius);[/B] [B] Gizmos.DrawWireSphere(this.gameObject.transform.position, Vector2.Distance(closestEnemy.transform.position, this.gameObject.transform.position));[/B] [B] }[/B] [B]}[/B] [B]** **