ETFXTarget.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using UnityEngine;
  2. using System.Collections;
  3. namespace EpicToonFX
  4. {
  5. public class ETFXTarget : MonoBehaviour
  6. {
  7. [Header("Effect shown on target hit")]
  8. public GameObject hitParticle;
  9. [Header("Effect shown on target respawn")]
  10. public GameObject respawnParticle;
  11. private Renderer targetRenderer;
  12. private Collider targetCollider;
  13. void Start()
  14. {
  15. targetRenderer = GetComponent<Renderer>();
  16. targetCollider = GetComponent<Collider>();
  17. }
  18. void SpawnTarget()
  19. {
  20. targetRenderer.enabled = true; //Shows the target
  21. targetCollider.enabled = true; //Enables the collider
  22. GameObject respawnEffect = Instantiate(respawnParticle, transform.position, transform.rotation) as GameObject; //Spawns attached respawn effect
  23. Destroy(respawnEffect, 3.5f); //Removes attached respawn effect after x seconds
  24. }
  25. void OnTriggerEnter(Collider col)
  26. {
  27. if (col.tag == "Missile") // If collider is tagged as missile
  28. {
  29. if (hitParticle)
  30. {
  31. //Debug.Log("Target hit!");
  32. GameObject destructibleEffect = Instantiate(hitParticle, transform.position, transform.rotation) as GameObject; // Spawns attached hit effect
  33. Destroy(destructibleEffect, 2f); // Removes hit effect after x seconds
  34. targetRenderer.enabled = false; // Hides the target
  35. targetCollider.enabled = false; // Disables target collider
  36. StartCoroutine(Respawn()); // Sets timer for respawning the target
  37. }
  38. }
  39. }
  40. IEnumerator Respawn()
  41. {
  42. yield return new WaitForSeconds(3);
  43. SpawnTarget();
  44. }
  45. }
  46. }