39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class DamageableObject : MonoBehaviour
|
|
{
|
|
public GameObject fxExplosion;
|
|
|
|
public void Damage(bool arrowOnFire, GameObject arrow)
|
|
{
|
|
if (arrowOnFire)
|
|
{
|
|
MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
|
|
meshRenderer.material.color = Color.red;
|
|
StartCoroutine(ExplodeBarrel(1.0f, arrow));
|
|
}
|
|
|
|
}
|
|
|
|
private IEnumerator ExplodeBarrel(float waitTime, GameObject arrow)
|
|
{
|
|
yield return new WaitForSeconds(waitTime);
|
|
GameObject explosion = Instantiate(fxExplosion, gameObject.transform);
|
|
GetComponent<AudioSource>().Play();
|
|
explosion.transform.localPosition = Vector3.zero;
|
|
Enemy[] enemies = FindObjectsOfType(typeof(Enemy)) as Enemy[];
|
|
foreach (Enemy enemy in enemies)
|
|
{
|
|
if (Vector3.Distance(enemy.transform.position, transform.position) < 4.0f)
|
|
enemy.Kill(true, false);
|
|
else if(Vector3.Distance(enemy.transform.position, transform.position) >= 4.0f && Vector3.Distance(enemy.transform.position, transform.position) < 6.0f)
|
|
enemy.TakeDamage(1, true, false);
|
|
}
|
|
GetComponent<MeshRenderer>().enabled = false;
|
|
Destroy(arrow);
|
|
Destroy(gameObject, 4f);
|
|
}
|
|
}
|