52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
namespace EpicToonFX
|
|
{
|
|
|
|
public class ETFXTarget : MonoBehaviour
|
|
{
|
|
[Header("Effect shown on target hit")]
|
|
public GameObject hitParticle;
|
|
[Header("Effect shown on target respawn")]
|
|
public GameObject respawnParticle;
|
|
private Renderer targetRenderer;
|
|
private Collider targetCollider;
|
|
|
|
void Start()
|
|
{
|
|
targetRenderer = GetComponent<Renderer>();
|
|
targetCollider = GetComponent<Collider>();
|
|
}
|
|
|
|
void SpawnTarget()
|
|
{
|
|
targetRenderer.enabled = true; //Shows the target
|
|
targetCollider.enabled = true; //Enables the collider
|
|
GameObject respawnEffect = Instantiate(respawnParticle, transform.position, transform.rotation) as GameObject; //Spawns attached respawn effect
|
|
Destroy(respawnEffect, 3.5f); //Removes attached respawn effect after x seconds
|
|
}
|
|
|
|
void OnTriggerEnter(Collider col)
|
|
{
|
|
if (col.tag == "Missile") // If collider is tagged as missile
|
|
{
|
|
if (hitParticle)
|
|
{
|
|
//Debug.Log("Target hit!");
|
|
GameObject destructibleEffect = Instantiate(hitParticle, transform.position, transform.rotation) as GameObject; // Spawns attached hit effect
|
|
Destroy(destructibleEffect, 2f); // Removes hit effect after x seconds
|
|
targetRenderer.enabled = false; // Hides the target
|
|
targetCollider.enabled = false; // Disables target collider
|
|
StartCoroutine(Respawn()); // Sets timer for respawning the target
|
|
}
|
|
}
|
|
}
|
|
|
|
IEnumerator Respawn()
|
|
{
|
|
yield return new WaitForSeconds(3);
|
|
SpawnTarget();
|
|
}
|
|
}
|
|
} |