Pedro Gomes 001bd2095a Many spell VFXs
added new mage aoe over time spell (Blizzard)
2024-07-01 19:56:33 +01:00

80 lines
2.3 KiB
C#

using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class PrefabManager : MonoBehaviour
{
public GameObject[] prefabs; // List of prefabs assigned from the Inspector
public Collider floorCollider; // The floor to detect clicks
public Transform cameraPivot; // Pivot for the camera
public float cameraRotationSpeed = 10f; // Rotation speed
public float destroyDelay = 2f; // Time to destroy prefabs
public Text infoText;
private int currentIndex = 0; // Index of the current prefab
void Start()
{
UpdateInfoText(); // Update text at start
}
void Update()
{
// Switch between prefabs with left/right keys
if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow))
{
SelectPreviousPrefab();
}
if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow))
{
SelectNextPrefab();
}
// Instantiate the prefab with one click
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
if (floorCollider.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 1000f))
{
GameObject instance = Instantiate(prefabs[currentIndex], hit.point, Quaternion.identity);
Destroy(instance, destroyDelay); // Destroy in 2 seconds
}
}
// Rotate the camera around the pivot
cameraPivot.Rotate(Vector3.up * (cameraRotationSpeed * Time.deltaTime)); // Rotates on the Y axis
}
private void SelectPreviousPrefab() // Previous prefab
{
currentIndex--;
if (currentIndex < 0)
{
currentIndex = prefabs.Length - 1;
}
UpdateInfoText();
}
private void SelectNextPrefab() // Next prefab
{
currentIndex++;
if (currentIndex >= prefabs.Length)
{
currentIndex = 0;
}
UpdateInfoText();
}
private void UpdateInfoText() // Name and number of the prefab
{
int currentNumber = currentIndex + 1;
int totalNumber = prefabs.Length;
infoText.text = $"({currentNumber}/{totalNumber}) \nPrefab actual: {prefabs[currentIndex].name} ";
}
}