Question by 
               DannyCampi · Apr 20, 2017 at 09:28 PM · 
                scripting problemenemytargetenemiestargetting  
              
 
              Player target enemies automatically
Hi I have this Script. I have 3 enemies but if 2 of them attack me I only can attack 1 of them at a time. I want not to target only one, but target any enemy who reach me without pressing a button. This is the code:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Targetting : MonoBehaviour {
     public List<Transform> targets;
     public Transform selectedTarget;
     private Transform myTransform;
 
 
     // Use this for initialization
     void Start () {
         targets = new List<Transform>();
         selectedTarget = null;
         myTransform = transform;
         AddAllEnemies ();
     }
 
     public void AddAllEnemies()
     {
         GameObject[] go = GameObject.FindGameObjectsWithTag ("Enemy");
 
         foreach (GameObject enemy in go)
             AddTarget (enemy.transform);
     }
 
     public void AddTarget(Transform enemy)
     {
         targets.Add(enemy);
     }
     private void SortTargetsByDistance()
     {
         targets.Sort (delegate(Transform t1, Transform t2) {
             return Vector3.Distance (t1.position, myTransform.position).CompareTo (Vector3.Distance (t2.position, myTransform.position));
         });
     }
     private void TargetEnemy()
     {
         if (selectedTarget == null) {
             SortTargetsByDistance ();
             selectedTarget = targets [0];
         } 
         else 
         {
             int index = targets.IndexOf (selectedTarget);
             if (index < targets.Count - 1) {
                 index++;
             } else 
             {
                 index = 0;
             }
             DeselectTarget ();
             selectedTarget = targets [index];
 
         }
         SelectTarget ();
     }
 
     private void SelectTarget()
     {
         selectedTarget.GetComponent<Renderer>().material.color = Color.red;
 
         PlayerAttack pa = (PlayerAttack)GetComponent ("PlayerAttack");
 
         pa.target = selectedTarget.gameObject;
 
     }
 
     private void DeselectTarget()
     {
         selectedTarget.GetComponent<Renderer>().material.color = Color.white;
         selectedTarget = null;
     }
     
     // Update is called once per frame
     void Update () {
         if (Input.GetKeyDown (KeyCode.Tab)) 
         {
             TargetEnemy ();
         }
     }
 }
 
 
 
I have another script named Player Attack in which the target is defined but I cant put all three enemies as a target.
 public class PlayerAttack : MonoBehaviour {
     public GameObject target;
     public float attackTimer;
     public float coolDown;
 
 
 
     // Use this for initialization
     void Start () {
         attackTimer = 0;
         coolDown = 0.0f;
 
         
     }
     
     // Update is called once per frame
     void Update () {
         if (attackTimer > 0)
             attackTimer -= Time.deltaTime;
         if (attackTimer < 0)
             attackTimer = 0;
         
         
         if(Input.GetKeyUp(KeyCode.Mouse0)){
             if (attackTimer == 0) {
                 Attack ();
                 attackTimer = coolDown;
             }
         }
     }
             private void Attack() {
         float distance = Vector3.Distance (target.transform.position, transform.position);
 
         Vector3 dir = (target.transform.position - transform.position).normalized;
 
         float direction = Vector3.Dot (dir, transform.forward);
 
         Debug.Log (direction);
 
         if (distance < 8) {
             if (direction > 0.5f) {
                 EnemyHealth eh = (EnemyHealth)target.GetComponent ("EnemyHealth");
                 eh.AddjustCurrentHealth (-10);
             }
         }
     }
 }
 
 
please Help with the scripts!!
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Unity2D Need Help in Multiple Enemies Shooting Script 0 Answers
LookAt() not working? 2 Answers
Score counter not working properly. 1 Answer
enemy look at GameObject player? unity ver. 5.2 C# 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                