Files
Scampz/Assets/Scripts/SceneManagement/ConditionalTeleportPlayer.cs
2022-08-31 00:31:21 -07:00

58 lines
1.6 KiB
C#

using System.Collections;
using UnityEngine;
namespace Scampz.GameJam.Assets.Scripts.SceneManagement
{
public class ConditionalTeleportPlayer : MonoBehaviour
{
[SerializeField]
private Transform _spawnPointA;
[SerializeField]
private Transform _spawnPointB;
[SerializeField]
private Camera[] camerasToActivateA;
[SerializeField]
private Camera[] camerasToActivateB;
private void OnTriggerEnter(Collider collider)
{
if (collider.CompareTag("Player"))
{
StartCoroutine(LoadNextLevel());
}
}
private IEnumerator LoadNextLevel()
{
var spawnPoint = _spawnPointA;
var cameras = camerasToActivateA;
if (UnlockSanctumState.Instance.SanctumUnlocked)
{
spawnPoint = _spawnPointB;
cameras = camerasToActivateB;
}
var levelChanger = FindObjectOfType<LevelChanger>();
levelChanger.FadeAnimation();
yield return null;
var player = GameObject.FindGameObjectWithTag("Player");
var cc = player.GetComponent<CharacterController>();
cc.enabled = false;
player.SetActive(false);
yield return new WaitForSeconds(1.0f);
yield return null;
player.transform.position = spawnPoint.position;
player.transform.rotation = spawnPoint.rotation;
cc.enabled = true;
var allCamerasInCurrentScene = FindObjectsOfType<Camera>();
foreach (var sceneCamera in allCamerasInCurrentScene)
sceneCamera.enabled = false;
foreach (var camera in cameras)
camera.enabled = true;
player.SetActive(true);
yield return null;
}
}
}