46 lines
1.6 KiB
C#
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);
|
|
}
|
|
|
|
}
|