public void NewLife() { GameObject[] backgroundObjects = GameObject.FindGameObjectsWithTag("Background"); scoreMultiplier = 1; maxHealth = startingMaxHealth; currentHealth = maxHealth; if (hasMovementUpgrade) { maxMoveCapacity = startingMaxMoveCapacity; maxForceSingleMove *= .80f; maxSpeed += maxSpeed *= .80f; } currentMoveCapacity = maxMoveCapacity; hasHealthUpgrade = false; hasMovementUpgrade = false; transform.position = Vector3.zero; transform.rotation = Quaternion.identity; GetComponent <Rigidbody2D>().angularVelocity = 0; GetComponent <Rigidbody2D>().velocity = Vector3.zero; CheckUpgradeSprites(); foreach (GameObject backgroundObject in backgroundObjects) { SpaceObjectController backgroundController = backgroundObject.GetComponent <SpaceObjectController>(); if (backgroundController != null && !backgroundController.avoidCentreDuringGeneration) { backgroundController.ResetPosition(); } } Vector3 newCamPosition = mainCamera.transform.position; newCamPosition.x = 0f; newCamPosition.y = 0f; mainCamera.transform.position = newCamPosition; timeKeeper.ClearCentre(); timeKeeper.RestoreNonRenewableObjects(); lostLife = false; alive = true; if (UI.isFastForward) { UI.fastForwardToggle.isOn = false; } UI.HideLostLifeUI(); UI.UpdateLivesText(); StartCoroutine(PlayerHurt("new life")); }