Attempting to set bool on targeted object - if target is set to true, move to next in list.
So in short, i am attempting to have the below script "target" a game object(it does this fine), and move towards it, however if the enemy has "AmITargeted" set to true, it will search for a new target.
However i would like to have multiple enemies on screen, and once a enemy has been targeted, the "AmITargeted" bool on the enemy is set to true.
as an example. Team 1 has two units. (labelled A & B) The enemy team(team 2) has two units also (Labelled C &D)
Unit A starts - targets unit D - Sets unit D's AmITargeted to true. Unit B starts - Targets unit D - sees that unit D's AmITargeted is true, and then targets unit C.
any help would be great! here is the code for the "ally units" the enemy units will be carbon copies of this. using UnityEngine; using System.Collections; using System.Collections.Generic;
public class _AllyCombat : MonoBehaviour {
#region stats
//enemylist&Targeting
public List <Transform> Enemies;
public Transform SelectedTarget;
public string EnemyTag;
public bool AmITargeted = false;
public bool IHaveATarget = false;
//moving
public float Speed = 2;
//debugmoving
public bool IAmAllowedToMove = true;
//unit stats
public enum TypeOfUnit{
Soldier,Archer,Calvery,Hero1,Hero2
}
public string Name;
public int _HP;
public int _ATK;
public int _MATK;
public int _DEF;
public int _MDEF;
public int _SPD;
public int _RANGE;
public int _LEVEL;
public int _RANK;
private Vector3 TargetToMoveTo;
#endregion
#region Targeting
// Use this for initialization
void Start () {
SelectedTarget = null;
Enemies = new List<Transform> ();
AddEnemiesToList ();
}
public void AddEnemiesToList(){
GameObject[] ItemsInList = GameObject.FindGameObjectsWithTag("Team2");
foreach (GameObject _Enemy in ItemsInList) {
AddTarget (_Enemy.transform);
}
}
public void AddTarget(Transform enemy){
Enemies.Add (enemy);
}
public void TargetedEnemy(){
if (SelectedTarget == null) {
//Select closest unit
int number = Enemies.Count;
SelectedTarget = Enemies [number - 1];
}
}
// Update is called once per frame
void FixedUpdate () {
if(IHaveATarget == false){
TargetedEnemy ();
IHaveATarget = true;
}
//moving
if(IAmAllowedToMove == true){
if(IHaveATarget == true){
TargetToMoveTo = SelectedTarget.position;
transform.position = Vector3.MoveTowards (transform.position, TargetToMoveTo, Speed * Time.deltaTime);
}
}
}
#endregion
#region Combat
public void IsInCombat(){
}
#endregion
}