Hi Guys, Ive been doing this Zombie Runner tutorial by Jesse Freeman and just finished the reset game after the player is DestroyedOffScreen. What should happen after that is:
when anyKeyDown - the game resets and drops the player in the screen again while slowly resuming the velocity of all objects (wall, floor, obstacles etc.)
What Actually happens after the player is destroyed is:
- The player is dropped in the middle of the screen
- The game resumes velocity for a moment
- The game freezes and it doesnt matter if I press any key from that point on
Here is my GameManager script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour {
public GameObject playerPrefab;
private TimeManager timeManager;
private bool gameStarted;
private GameObject player;
private GameObject floor;
private Spawner spawner;
void Awake(){
floor = GameObject.Find ("Foreground");
spawner = GameObject.Find ("Spawner").GetComponent<Spawner> ();
timeManager = GetComponent<TimeManager> ();
}
// Use this for initialization
void Start () {
var floorHeight = floor.transform.localScale.y;
var pos = floor.transform.position;
pos.x = 0;
pos.y = -((Screen.height / PixelPerfectCamera.pixelsToUnits) / 2) + (floorHeight / 2);
floor.transform.position = pos;
spawner.active = false;
Time.timeScale = 0;
}
// Update is called once per frame
void Update () {
if (!gameStarted && Time.timeScale == 0) {
if (Input.anyKeyDown) {
timeManager.ManipulateTime (1, 1f);
ResetGame ();
}
}
}
void OnPlayerKilled(){
spawner.active = false;
var playerDestroyScript = player.GetComponent<DestroyOffScreen> ();
playerDestroyScript.DestroyCallback -= OnPlayerKilled;
player.GetComponent<Rigidbody2D> ().velocity = Vector2.zero;
timeManager.ManipulateTime (0, 5.5f);
gameStarted = false;
}
void ResetGame() {
spawner.active = true;
player = GameObjectUtil.Instantiate(playerPrefab, new Vector3 (0, (Screen.height /PixelPerfectCamera.pixelsToUnits)/2 + 100, 0));
var playerDestroyScript = player.GetComponent<DestroyOffScreen> ();
playerDestroyScript.DestroyCallback += OnPlayerKilled;
gameStarted = true;
}
}