есть враг с тегом Enemy
есть защитник который ищет юнита с тегом Enemy
После того как защитник убивает одно юнита с тегом Enemy
он не бежит к другим юнитам с тегом Enemy, а просто останавливается и всё
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
public class DefenceAxe : MonoBehaviour
{
public float Speed;
private float TimeBtwAttack;
public float StartTimeBtwAttack;
public float stoppingDistance;
Enemy _enm;
private Transform target;
Animator anim;
void Start()
{
_enm = FindObjectOfType<Enemy>();
anim = GetComponent<Animator>();
target = GameObject.FindGameObjectWithTag("Enemy").GetComponent<Transform>();
}
private void Update()
{
if(target.transform.position.x < transform.position.x)
{
transform.eulerAngles = new Vector3(0, 180, 0);
}
else
{
transform.eulerAngles = new Vector3(0, 0, 0);
}
if (Vector2.Distance(transform.position, target.position) > stoppingDistance)
{
transform.position = Vector2.MoveTowards(transform.position, target.position, Speed * Time.deltaTime);
}
}
private void OnTriggerStay2D(Collider2D other)
{
if (other.CompareTag("Enemy"))
{
if (TimeBtwAttack <= 0)
{
anim.SetTrigger("Attack");
_enm.HP--;
TimeBtwAttack = StartTimeBtwAttack;
}
else
{
TimeBtwAttack -= Time.deltaTime;
}
}
}
}
Ну надо определить когда таргет умер (из этого кода непонятно как это можно сделать) и снова делать то, что в начале.
только если мертвый таргет остается на сцене и не теряет тег, то надо тогда их фильтровать при поиске.
Например, FindGameObjectsWithTag (с “s”) + FirstOrDefault (с условием внутри) стандартная функция .NET (LINQ).
@AlexP , а как тут можно сделать чтоб защитник преследовал не только объекты с тегом Enemy , а ещё и другие объекты с другими тегами, то-есть защитник убивает врага с тегом Enemy, но есть ещё враги с другими тегами, с тегом Regen, как сделать чтоб он и объекты с тегом Regen преследовал?