ProjetAMJV_CR/Assets/Scripts/UnitScripts/Attacks/Projectiles/HealthPotion.cs
2025-01-20 21:05:28 +01:00

38 lines
1.3 KiB
C#

using UnityEngine;
using System.Collections;
public class HealthPotion : ProjectileHandler
{
[SerializeField] private float healthAdd;
[SerializeField] private SphereCollider healthPotionEffectArea;
[SerializeField] private GameObject explodeMesh;
[SerializeField] private float exploseMeshTime = 0.5f;
void OnCollisionEnter(Collision collision)
{
Collider[] targets = Physics.OverlapSphere(transform.position, healthPotionEffectArea.radius, healthPotionEffectArea.includeLayers);
foreach (Collider target in targets)
{
if (!target.CompareTag("Unit")) continue;
// GetComponent is expensive in performance, optimize here if it's slow
AbstractUnit targetUnit = target.GetComponent<AbstractUnit>();
// No EnemyHealing
if (targetUnit.IsTeamA != FromTeamA) continue;
targetUnit.Heal(healthAdd);
}
CoroutineManager.Instance.StartCoroutine(ExplodeVisual());
Destroy(gameObject);
}
private IEnumerator ExplodeVisual()
{
GameObject explosion = Instantiate(explodeMesh, transform.position, Quaternion.identity);
explosion.transform.parent = null;
yield return new WaitForSeconds(exploseMeshTime);
Destroy(explosion);
}
}