В рамках самообучения повторил скрипт атаки с одного ютуб канала. Скрипт выглядит вот так:
Скрипт игрока
void Update()
{if (timeBtwAttack <= 0)
{
timeBtwAttack = startTimeBtwAttack;
}
else
{
timeBtwAttack -= Time.deltaTime;
}
//нанесение удара
if (Input.GetKeyDown(KeyCode.Space))
{
Attack();
}
}
void Attack()
{
//Воспросизвести анимацию аттаки
anim.SetTrigger("Attack");
//обнаружить всех врагов в зоне действия
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
//Нанести урон
for (int i = 0; i < hitEnemies.Length ; i++)
{
hitEnemies[i].GetComponent<FollowingEnemyHP>().GetDamage(firstAttackDamage);
}
}
private void OnDrawGizmosSelected()
{
if (attackPoint == null)
return;
Gizmos.DrawWireSphere(attackPoint.position, attackRange);
}
Гизмо установлен таким образом:
В качестве урона установлено значение 20. У врага установлено 100. Но бывает так, что при нанесении урона, враг умирает за 2 удара. Почему так?
Скрипт врага:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowingEnemyHP : MonoBehaviour
{
private float currentHealth;
public float health = 100;
private float damage = 0.1f; // урон наносимый игроку
private void Start()
{
currentHealth = health;
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.name == "Player")
{
collision.GetComponent<PlayerHP>().TakeDamage(damage);
}
}
public void GetDamage(float amount)
{
currentHealth -= amount;
if (currentHealth <= amount)
{
Die();
}
void Die()
{
Destroy(gameObject);
}
}
}
Подскажите, как исправить это недоразумение.