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();
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								}
							 |