Итак, я делал Миньона для своей игры зомб ie, но после запуска волны она движется в правильном направлении примерно на 0,2 секунды, разворачивается и достигает 0,0,0, и она больше не двигается, если только враг врезается в миньона, и тогда миньон будет go после зомба ie, но он продолжает возвращаться к 0,0,0. Я не понимаю, почему он продолжает возвращаться к 0,0,0, нет другого объекта с 0,0,0. Пожалуйста, помогите мне.
public Slider HealthBar;
public GameObject HealthBarUI;
private Rigidbody2D rb;
private float CurrentHealth;
public float MaxHealth;
public float HitsPerSecond;
public int DamagePerHit;
private float lastattacked;
public GameObject Player;
private GameObject[] Enemys;
private GameObject Enemy;
public float MoveSpeed;
public float healthBarHeight = 1;
private GameObject EnemysFolder;
void Start()
{
CurrentHealth = MaxHealth;
HealthBarUI.SetActive(false);
rb = GetComponent<Rigidbody2D>();
EnemysFolder = GameObject.Find("Enemys");
}
void ChooseNewEnemy()
{
Enemys = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject Enemyd in Enemys)
{
Enemy = Enemyd;
}
}
void Update()
{
HealthBar.value = CurrentHealth/MaxHealth;
if(CurrentHealth < MaxHealth)
{
HealthBarUI.SetActive(true);
}
}
public void dealDamage(int Damage)
{
CurrentHealth -= Damage;
if (CurrentHealth <= 0)
{
CurrentHealth = 0;
//Destroy(transform.parent.gameObject);
}
}
void OnTriggerStay2D(Collider2D collider)
{
if(collider.tag == "Enemy")
{
if ((Time.time - lastattacked > 1 / HitsPerSecond ))
{
if(collider.GetComponent<EnemyControler>() != null)
{
collider.GetComponent<EnemyControler>().dealDamage(DamagePerHit, Player);
/*if(collider.GetComponent<EnemyControler>().CurrentHealth <= 0)
{
ChooseNewEnemy();
}*/
}
lastattacked = Time.time;
}
}
}
void FixedUpdate()
{
Enemys = GameObject.FindGameObjectsWithTag("Enemy");
HealthBarUI.transform.position = new Vector3(transform.position.x, transform.position.y + healthBarHeight, transform.position.z);
transform.up = ((GetClosestEnemy(Enemys).transform.position - transform.position) * -1);
rb.velocity = (transform.up * -MoveSpeed);
}
GameObject GetClosestEnemy (GameObject[] enemies)
{
GameObject bestTarget = null;
float closestDistanceSqr = Mathf.Infinity;
Vector3 currentPosition = gameObject.transform.localPosition;
foreach(GameObject potentialTarget in enemies)
{
Vector3 directionToTarget = potentialTarget.transform.localPosition - currentPosition;
float dSqrToTarget = directionToTarget.sqrMagnitude;
if(dSqrToTarget < closestDistanceSqr)
{
closestDistanceSqr = dSqrToTarget;
bestTarget = potentialTarget;
}
}
return bestTarget;
}