init
This commit is contained in:
commit
16da8e4dde
333 changed files with 109229 additions and 0 deletions
274
Assets/Scripts/GameController.cs
Normal file
274
Assets/Scripts/GameController.cs
Normal file
|
@ -0,0 +1,274 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Cinemachine;
|
||||
|
||||
public class GameController : MonoBehaviour{
|
||||
|
||||
public int level;
|
||||
|
||||
[Header("SpawnRates")]
|
||||
public Vector2 minSpawnPos;
|
||||
public Vector2 maxSpawnPos;
|
||||
public float standardEnemySpawnRate = 2f;
|
||||
public float circleEnemySpawnRate = 3f;
|
||||
public float bigEnemySpawnRate = 4f;
|
||||
public float rocketEnemySpawnRate = 10f;
|
||||
public float gunSpawnRate = 15f;
|
||||
[HideInInspector]
|
||||
public float actualStandardEnemySpawnRate, actualCircleEnemySpawnRate, actualBigEnemySpawnRate, actualRocketEnemySpawnRate, actualGunSpawnRate;
|
||||
public float spawnRateDivider = .6f;
|
||||
|
||||
[Header("Car")]
|
||||
public CinemachineVirtualCamera room1Cam;
|
||||
public CinemachineVirtualCamera room2Cam;
|
||||
public CinemachineVirtualCamera room3Cam;
|
||||
public CinemachineVirtualCamera room4Cam;
|
||||
public CameraController cameraController;
|
||||
public float speed;
|
||||
public GameObject car;
|
||||
public GameObject[] checkPoints;
|
||||
Transform target;
|
||||
public Transform player;
|
||||
public HealthBar health;
|
||||
[HideInInspector]
|
||||
public bool ready, playered;
|
||||
bool dead;
|
||||
|
||||
[Header("Level")]
|
||||
public GameObject[] doors;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
PreFirst();
|
||||
GetComponent<BigEnemySpawner>().enabled = false;
|
||||
GetComponent<CircleEnemySpawner>().enabled = false;
|
||||
GetComponent<EnemySpawner>().enabled = false;
|
||||
GetComponent<GunSpawner>().enabled = false;
|
||||
GetComponent<RocketEnemySpawner>().enabled = false;
|
||||
AudioManager.instance.Stop("MenuTheme");
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
if(health.hp <= 0 && dead == false){
|
||||
car.SetActive(false);
|
||||
ObjectPooler.Instance.SpawnFromPool("CarExplosion", car.transform.position, Quaternion.identity);
|
||||
Camera.main.GetComponent<Animator>().SetBool("GameOver", true);
|
||||
FindObjectOfType<InGameUI>().GameOver(false);
|
||||
AudioManager.instance.Stop("MainTheme");
|
||||
Time.timeScale = 0f;
|
||||
dead = true;
|
||||
}
|
||||
if(level != 0 && level != 1){
|
||||
actualBigEnemySpawnRate = bigEnemySpawnRate / (spawnRateDivider * level);
|
||||
actualStandardEnemySpawnRate = standardEnemySpawnRate / (spawnRateDivider * level);
|
||||
actualRocketEnemySpawnRate = rocketEnemySpawnRate / (spawnRateDivider * level);
|
||||
actualCircleEnemySpawnRate = circleEnemySpawnRate / (spawnRateDivider * level);
|
||||
actualGunSpawnRate = gunSpawnRate * (spawnRateDivider / level);
|
||||
}else{
|
||||
actualBigEnemySpawnRate = bigEnemySpawnRate;
|
||||
actualStandardEnemySpawnRate = standardEnemySpawnRate;
|
||||
actualRocketEnemySpawnRate = rocketEnemySpawnRate;
|
||||
actualCircleEnemySpawnRate = circleEnemySpawnRate;
|
||||
actualGunSpawnRate = gunSpawnRate;
|
||||
}
|
||||
|
||||
if (playered){
|
||||
if (second){
|
||||
minSpawnPos = new Vector2(17, -4);
|
||||
maxSpawnPos = new Vector2(33, 4);
|
||||
GetComponent<BigEnemySpawner>().enabled = true;
|
||||
GetComponent<CircleEnemySpawner>().enabled = true;
|
||||
GetComponent<EnemySpawner>().enabled = true;
|
||||
GetComponent<GunSpawner>().enabled = true;
|
||||
GetComponent<RocketEnemySpawner>().enabled = true;
|
||||
room2Cam.gameObject.SetActive(true);
|
||||
cameraController.follow = checkPoints[1].transform;
|
||||
health.time = 0f;
|
||||
Invoke(nameof(Third), 30f);
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(true);
|
||||
}
|
||||
second = false;
|
||||
}
|
||||
if (third){
|
||||
minSpawnPos = new Vector2(42, -4);
|
||||
maxSpawnPos = new Vector2(58, 4);
|
||||
GetComponent<BigEnemySpawner>().enabled = true;
|
||||
GetComponent<CircleEnemySpawner>().enabled = true;
|
||||
GetComponent<EnemySpawner>().enabled = true;
|
||||
GetComponent<GunSpawner>().enabled = true;
|
||||
GetComponent<RocketEnemySpawner>().enabled = true;
|
||||
room3Cam.gameObject.SetActive(true);
|
||||
cameraController.follow = checkPoints[2].transform;
|
||||
health.time = 0f;
|
||||
Invoke(nameof(Fourth), 30f);
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(true);
|
||||
}
|
||||
third = false;
|
||||
}
|
||||
if (fourth){
|
||||
minSpawnPos = new Vector2(67, -4);
|
||||
maxSpawnPos = new Vector2(83, 4);
|
||||
GetComponent<BigEnemySpawner>().enabled = true;
|
||||
GetComponent<CircleEnemySpawner>().enabled = true;
|
||||
GetComponent<EnemySpawner>().enabled = true;
|
||||
GetComponent<GunSpawner>().enabled = true;
|
||||
GetComponent<RocketEnemySpawner>().enabled = true;
|
||||
room4Cam.gameObject.SetActive(true);
|
||||
cameraController.follow = checkPoints[3].transform;
|
||||
health.time = 0f;
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(true);
|
||||
}
|
||||
Invoke(nameof(Fifth), 30f);
|
||||
fourth = false;
|
||||
}
|
||||
if (ableToWin){
|
||||
Finish();
|
||||
Camera.main.GetComponent<Animator>().SetBool("Win", true);
|
||||
Invoke(nameof(WinWin), 0.5f);
|
||||
ableToWin = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FixedUpdate(){
|
||||
if (health.hp > 0){
|
||||
car.transform.position = Vector2.MoveTowards(car.transform.position, new Vector2(target.position.x + .675f, target.position.y), speed * Time.deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
void PreFirst(){
|
||||
Invoke(nameof(First), 4f);
|
||||
target = checkPoints[0].transform;
|
||||
room1Cam.gameObject.SetActive(true);
|
||||
cameraController.follow = checkPoints[0].transform;
|
||||
}
|
||||
|
||||
void First(){
|
||||
AudioManager.instance.Play("MainTheme");
|
||||
ready = true;
|
||||
GetComponent<BigEnemySpawner>().enabled = true;
|
||||
GetComponent<CircleEnemySpawner>().enabled = false;
|
||||
GetComponent<EnemySpawner>().enabled = true;
|
||||
GetComponent<GunSpawner>().enabled = true;
|
||||
GetComponent<RocketEnemySpawner>().enabled = false;
|
||||
Invoke(nameof(Second), 30f);
|
||||
}
|
||||
void Second(){
|
||||
Finish();
|
||||
level = 1;
|
||||
foreach(GameObject d in doors){
|
||||
d.SetActive(false);
|
||||
}
|
||||
room1Cam.gameObject.SetActive(false);
|
||||
room2Cam.gameObject.SetActive(false);
|
||||
room3Cam.gameObject.SetActive(false);
|
||||
room4Cam.gameObject.SetActive(false);
|
||||
cameraController.follow = player;
|
||||
target = checkPoints[1].transform;
|
||||
Invoke(nameof(SecondSecond), 25f);
|
||||
}
|
||||
bool second;
|
||||
void SecondSecond(){
|
||||
second = true;
|
||||
}
|
||||
void Third(){
|
||||
Finish();
|
||||
level = 2;
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(false);
|
||||
}
|
||||
room1Cam.gameObject.SetActive(false);
|
||||
room2Cam.gameObject.SetActive(false);
|
||||
room3Cam.gameObject.SetActive(false);
|
||||
room4Cam.gameObject.SetActive(false);
|
||||
cameraController.follow = player;
|
||||
target = checkPoints[2].transform;
|
||||
Invoke(nameof(ThirdThird), 25f);
|
||||
}
|
||||
bool third;
|
||||
void ThirdThird(){
|
||||
third = true;
|
||||
}
|
||||
void Fourth(){
|
||||
Finish();
|
||||
level = 3;
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(false);
|
||||
}
|
||||
room1Cam.gameObject.SetActive(false);
|
||||
room2Cam.gameObject.SetActive(false);
|
||||
room3Cam.gameObject.SetActive(false);
|
||||
room4Cam.gameObject.SetActive(false);
|
||||
cameraController.follow = player;
|
||||
target = checkPoints[3].transform;
|
||||
Invoke(nameof(FourthFourth), 25f);
|
||||
}
|
||||
bool fourth;
|
||||
void FourthFourth(){
|
||||
fourth = true;
|
||||
}
|
||||
|
||||
void Fifth(){
|
||||
foreach (GameObject d in doors){
|
||||
d.SetActive(false);
|
||||
}
|
||||
room1Cam.gameObject.SetActive(false);
|
||||
room2Cam.gameObject.SetActive(false);
|
||||
room3Cam.gameObject.SetActive(false);
|
||||
room4Cam.gameObject.SetActive(false);
|
||||
cameraController.follow = player;
|
||||
target = checkPoints[4].transform;
|
||||
Invoke(nameof(Win), 18f);
|
||||
}
|
||||
bool ableToWin;
|
||||
void Win(){
|
||||
ableToWin = true;
|
||||
}
|
||||
|
||||
void WinWin(){
|
||||
Time.timeScale = 0f;
|
||||
FindObjectOfType<InGameUI>().GameOver(true);
|
||||
AudioManager.instance.Stop("MainTheme");
|
||||
}
|
||||
|
||||
void Finish(){
|
||||
GetComponent<BigEnemySpawner>().enabled = false;
|
||||
GetComponent<CircleEnemySpawner>().enabled = false;
|
||||
GetComponent<EnemySpawner>().enabled = false;
|
||||
GetComponent<GunSpawner>().enabled = false;
|
||||
GetComponent<RocketEnemySpawner>().enabled = false;
|
||||
foreach (GameObject g in GameObject.FindGameObjectsWithTag("Enemy")){
|
||||
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", g.transform.position, Quaternion.identity);
|
||||
if(g.transform.parent == null){
|
||||
g.SetActive(false);
|
||||
}else if(g.transform.parent.CompareTag("Enemy")){
|
||||
g.transform.parent.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
foreach (GameObject g in GameObject.FindGameObjectsWithTag("BigEnemy")){
|
||||
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", g.transform.position, Quaternion.identity);
|
||||
g.SetActive(false);
|
||||
}
|
||||
foreach (GameObject g in GameObject.FindGameObjectsWithTag("RocketEnemy")){
|
||||
ObjectPooler.Instance.SpawnFromPool("RocketEnemyDeath", g.transform.position, Quaternion.identity);
|
||||
if (g.transform.parent == null){
|
||||
g.SetActive(false);
|
||||
}else if (g.transform.parent.CompareTag("RocketEnemy")){
|
||||
g.transform.parent.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
foreach (GameObject g in GameObject.FindGameObjectsWithTag("CircleEnemy")){
|
||||
ObjectPooler.Instance.SpawnFromPool("CircleEnemyDeath", g.transform.position, Quaternion.identity);
|
||||
if (g.transform.parent == null){
|
||||
g.SetActive(false);
|
||||
}else if (g.transform.parent.CompareTag("CircleEnemy")){
|
||||
g.transform.parent.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue