Heroes_of_Hiis/Assets/Project Files/Scripts/JoonasP/WellController.cs

72 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WellController : MonoBehaviour
{
public GameObject node;
public int numberOfNodes = 5;
private List<GameObject> nodes = new List<GameObject>();
public float spawnDelay;
//public float despawnTime;
private Transform player;
public float rightDistance = 0.2f; //Distance between spawned nodes
public float maxUp = 0.2f; //Maximum up shift between orbs
public float minDown = -0.2f; //Same but for down
private Vector3 right;
private Vector3 up;
private void Awake()
{
}
public void StartMinigame()
{
player = GameObject.FindGameObjectWithTag("MainCamera").transform;
Vector3 nodeSpawn = player.transform.position + (player.forward * 0.5f);
nodeSpawn.y = player.transform.position.y;
up = player.transform.up;
right = player.transform.right;
StartCoroutine(SpawnNode(nodeSpawn, 0.5f, 0));
}
IEnumerator SpawnNode(Vector3 nodeSpawn, float pitch, int i)
{
if(i == numberOfNodes)
{
foreach(GameObject node in nodes)
{
node.GetComponent<EssenceNodeController>().FollowPlayer();
}
nodes.Clear();
yield break;
}
GameObject tempNode = Instantiate(node, nodeSpawn, Quaternion.identity);
tempNode.GetComponent<AudioSource>().pitch = pitch;
nodeSpawn = nodeSpawn + right * rightDistance + Random.Range(minDown, maxUp) * up;
yield return new WaitForSeconds(spawnDelay);
if (tempNode.GetComponent<EssenceNodeController>().isTouched)
{
nodes.Add(tempNode);
StartCoroutine(SpawnNode(nodeSpawn, pitch + 0.1f, i + 1));
}
else
{
Destroy(tempNode);
StartCoroutine(SpawnNode(nodeSpawn, pitch, i + 1));
}
}
private void Update()
{
transform.Rotate(new Vector3(10f, 10f, 10f) * Time.deltaTime);
}
}