MiniGame-PushPush/Assets/Epic Toon FX/Demo/Scripts/ETFXFireProjectile.cs

86 lines
3.0 KiB
C#
Raw Normal View History

2023-10-04 20:20:04 +09:00
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;
}
}
}