74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
using UnityEngine;
 | 
						|
using UnityEngine.EventSystems;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
namespace PolygonArsenal
 | 
						|
{
 | 
						|
    public class PolygonFireProjectile : MonoBehaviour
 | 
						|
    {
 | 
						|
        RaycastHit hit;
 | 
						|
        public GameObject[] projectiles;
 | 
						|
        public Transform spawnPosition;
 | 
						|
        [HideInInspector]
 | 
						|
        public int currentProjectile = 0;
 | 
						|
        public float speed = 1000;
 | 
						|
 | 
						|
        //    MyGUI _GUI;
 | 
						|
        PolygonButtonScript selectedProjectileButton;
 | 
						|
 | 
						|
        void Start()
 | 
						|
        {
 | 
						|
            selectedProjectileButton = GameObject.Find("Button").GetComponent<PolygonButtonScript>();
 | 
						|
        }
 | 
						|
 | 
						|
        void Update()
 | 
						|
        {
 | 
						|
            if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D))
 | 
						|
            {
 | 
						|
                nextEffect();
 | 
						|
            }
 | 
						|
 | 
						|
            else if (Input.GetKeyDown(KeyCode.A) || 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 the 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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |