- Home /
Question by
qz154772610 · Sep 21, 2020 at 10:11 PM ·
attack
i tried to make my soldier attack enemy when they close enough, but they only attack for one or twice then stopped forever.
void Update()
{
if(CurrentHealth <= 0)
{
Destroy(this.gameObject);
}
damage = gamemanager.allydamage;
armor = gamemanager.allyarmor;
FindClosestEnemy();
if (closestEnemy != null && Vector2.Distance(closestEnemy.transform.position, this.gameObject.transform.position) <= fightDistance)
{
Vector2 newPos = closestEnemy.transform.position;
this.gameObject.transform.position = Vector2.MoveTowards(this.transform.position, newPos, Time.deltaTime);
}
else
{
Vector2 newPos = player.transform.position;
this.gameObject.transform.position = Vector2.MoveTowards(this.transform.position, newPos, Time.deltaTime);
}
if(Vector2.Distance (closestEnemy.transform.position ,this.gameObject .transform .position )<= attackRadius && Time.time >= nextAttackTime)
{
this.GetComponent<Animator>().SetTrigger("attacking");
closestEnemy.GetComponent<enemySoldier>().CurrentHealth -= (damage - closestEnemy.GetComponent<enemySoldier>().armor);
nextAttackTime += Time.time;
}
}
public void FindClosestEnemy()
{
float distanceToClosesetEnemy = Mathf.Infinity;
enemySoldier[] allEnemies = FindObjectsOfType<enemySoldier>();
foreach(enemySoldier currentEnemy in allEnemies)
{
float distanceBetweenThisAndEnemy = Vector2.Distance(currentEnemy.transform.position, this.gameObject.transform.position);
if(distanceBetweenThisAndEnemy <distanceToClosesetEnemy)
{
distanceToClosesetEnemy = distanceBetweenThisAndEnemy;
closestEnemy = currentEnemy;
}
}
}
Comment
Answer by rh_galaxy · Sep 21, 2020 at 11:04 PM
nextAttackTime += Time.time;
After the first attack it won't be a next one any time soon. Do it like this instead...
nextAttackTime = Time.time+10.0f; //next attack in 10s
Your answer
Follow this Question
Related Questions
Attacking enemy script problem 0 Answers
How to make a Homing Attack like in Sonic the HedgeHog? 2 Answers
How to give reference to scripts added dynamically? 2 Answers
Applying Damage 5 Answers
Character Animation Assistance 1 Answer