86 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using UnityEngine;
 | |
| using UnityEngine.EventSystems;
 | |
| using System.Collections;
 | |
| 
 | |
| namespace EpicToonFX
 | |
| {
 | |
|     public class ETFXFireProjectile : MonoBehaviour
 | |
|     {
 | |
|         [SerializeField]
 | |
|         public GameObject[] projectiles;
 | |
|         [Header("Missile spawns at attached game object")]
 | |
|         public Transform spawnPosition;
 | |
|         [HideInInspector]
 | |
|         public int currentProjectile = 0;
 | |
|         public float speed = 500;
 | |
| 
 | |
|         //    MyGUI _GUI;
 | |
|         ETFXButtonScript selectedProjectileButton;
 | |
| 
 | |
|         void Start()
 | |
|         {
 | |
|             selectedProjectileButton = GameObject.Find("Button").GetComponent<ETFXButtonScript>();
 | |
|         }
 | |
| 
 | |
|         RaycastHit hit;
 | |
| 
 | |
|         void Update()
 | |
|         {
 | |
|             if (Input.GetKeyDown(KeyCode.RightArrow))
 | |
|             {
 | |
|                 nextEffect();
 | |
|             }
 | |
| 
 | |
|             if (Input.GetKeyDown(KeyCode.D))
 | |
|             {
 | |
|                 nextEffect();
 | |
|             }
 | |
| 
 | |
|             if (Input.GetKeyDown(KeyCode.A))
 | |
|             {
 | |
|                 previousEffect();
 | |
|             }
 | |
|             else if (Input.GetKeyDown(KeyCode.LeftArrow))
 | |
|             {
 | |
|                 previousEffect();
 | |
|             }
 | |
| 
 | |
|             if (Input.GetKeyDown(KeyCode.Mouse0)) //On left mouse down-click
 | |
|             {
 | |
|                 if (!EventSystem.current.IsPointerOverGameObject()) //Checks if the mouse is not over a UI part
 | |
|                 {
 | |
|                     if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100f)) //Finds the point where you click with the mouse
 | |
|                     {
 | |
|                         GameObject projectile = Instantiate(projectiles[currentProjectile], spawnPosition.position, Quaternion.identity) as GameObject; //Spawns the selected projectile
 | |
|                         projectile.transform.LookAt(hit.point); //Sets the projectiles rotation to look at the point clicked
 | |
|                         projectile.GetComponent<Rigidbody>().AddForce(projectile.transform.forward * speed); //Set the speed of the projectile by applying force to the rigidbody
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             Debug.DrawRay(Camera.main.ScreenPointToRay(Input.mousePosition).origin, Camera.main.ScreenPointToRay(Input.mousePosition).direction * 100, Color.yellow);
 | |
|         }
 | |
| 
 | |
|         public void nextEffect() //Changes the selected projectile to the next. Used by UI
 | |
|         {
 | |
|             if (currentProjectile < projectiles.Length - 1)
 | |
|                 currentProjectile++;
 | |
|             else
 | |
|                 currentProjectile = 0;
 | |
| 			selectedProjectileButton.getProjectileNames();
 | |
|         }
 | |
| 
 | |
|         public void previousEffect() //Changes selected projectile to the previous. Used by UI
 | |
|         {
 | |
|             if (currentProjectile > 0)
 | |
|                 currentProjectile--;
 | |
|             else
 | |
|                 currentProjectile = projectiles.Length - 1;
 | |
| 			selectedProjectileButton.getProjectileNames();
 | |
|         }
 | |
| 
 | |
|         public void AdjustSpeed(float newSpeed) //Used by UI to set projectile speed
 | |
|         {
 | |
|             speed = newSpeed;
 | |
|         }
 | |
|     }
 | |
| } |