58 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|