Code of handling input making look for closest enemy:
if (Input.GetMouseButtonDown(0) && !hitDelay)
{
AttackAnim();
if (closestEnemy())
{
if (Vector3.Distance(transform.position, closestEnemy().transform.position) <= 3)
{
if (closestEnemy().tag == "Enemy")
{
Debug.Log("Hitting enemy");
enemy = closestEnemy().gameObject.GetComponent();
enemy.Hit();
if (enemy.life <= 0)
DestroyClosestEnemy();
}
else if (closestEnemy().tag != "Player" && closestEnemy().tag != "Untagged")
{
Debug.Log("Destroying " + closestEnemy().tag);
DestroyClosestEnemy();
wood++;
Debug.Log("You have " + wood + " woods");
}
else
{
;
}
}
}
StartCoroutine(HitCoroutine());
}
code of function
private GameObject closestEnemy()
{
GameObject[] Objects = Object.FindObjectsOfType().Where(f => (f.tag == "Enemy" || f.tag == "Tree") && Vector3.Distance(f.transform.position, transform.position) <= 3).ToArray();
GameObject closestEnemy = null;
bool first = true;
foreach(var obj in Objects)
{
float Distance = Vector3.Distance(transform.position, obj.transform.position);
if (first)
{
closestEnemy = obj;
first = false;
}
if (Distance < Vector3.Distance(transform.position, closestEnemy.transform.position))
{
closestEnemy = obj;
}
}
return closestEnemy;
}
↧