How do i have AI objects have teams and attack when in range

I am making a rts game I have the money power and movement set up but now I need a way for the teams to be set up. It has to be a efficient way to detect without using colliders for range. Heres basicly what I need
alt text

I dont need you to set up the firing and stuff just need it to know that it is suppose to attack. C#

I think you would do something like

var distanceTillShoot : float;
var LookAtTarget : Transform;
 
function Shoot(){
var distance = Vector3.Distance(LookAtTarget.transform.position, transform.position);
if (distance <= distanceTillShoot){
//your function
   }
}

Multiple ways to do teams

  • Tags
  • Parenting
  • Custom variable in script

Triggers are probably still the best way to do detection. The other option is to manually check the distance against every enemy in the scene. Might be cheaper for a small number of enemies working in squared space. But I would be surprised.

Ok i came up with this script it works with objects tagged as player.

public float team = 1;
	public float radius = 0.1f;
	private Team Bla;
	// Use this for initialization
	void Start () 
	{
		InvokeRepeating("SlowUpdate", 2, 2);
	}
	
	void SlowUpdate()
	{
		Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius);
		
		for(int i = 0; i < hitColliders.Length; i++)
		{
			if(hitColliders*.gameObject.tag == "Player")*
  •  	{*
    

_ Bla = hitColliders*.transform.GetComponent();_
_
if(Bla.team != team)_
_
{_
_
renderer.material.color = new Color(1,4,1);_
_
}_
_
}_
_
}_
_
}*_