Files
TutorialRTS/Assets/GabrielAguiarProductions/Scripts/UniqueMagicAbilities/SpawnCometsScript.cs
2026-03-19 11:57:23 +00:00

46 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnCometsScript : MonoBehaviour {
public GameObject comet;
public GameObject startPoint;
public GameObject endPoint;
public float delay;
public float rateOfFire;
public float radius;
public float quantity;
public float waves;
void Start () {
StartCoroutine (SpawnVFX(comet, delay, rateOfFire));
}
IEnumerator SpawnVFX (GameObject vfx, float delay, float rateDelay){
for (int j = 0; j < waves; j++) {
yield return new WaitForSeconds (delay);
for (int i = 0; i < quantity; i++) {
var startPos = startPoint.transform.position;
if(radius != 0)
startPos = new Vector3 (startPoint.transform.position.x + Random.Range (-radius, radius), startPoint.transform.position.y + Random.Range (-radius, radius), startPoint.transform.position.z + Random.Range (-radius, radius));
GameObject objVFX = Instantiate (vfx, startPos, Quaternion.identity) as GameObject;
var endPos = endPoint.transform.position;
if(radius != 0)
endPos = new Vector3 (endPoint.transform.position.x + Random.Range (-radius, radius), endPoint.transform.position.y + Random.Range (-radius, radius), endPoint.transform.position.z + Random.Range (-radius, radius));
RotateTo (objVFX, endPos);
yield return new WaitForSeconds (rateDelay);
}
}
}
void RotateTo (GameObject obj, Vector3 destination ) {
var direction = destination - obj.transform.position;
var rotation = Quaternion.LookRotation (direction);
obj.transform.localRotation = Quaternion.Lerp (obj.transform.rotation, rotation, 1);
}
}