45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Ktyl.Util;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
public class DeathZone : MonoBehaviour
|
|
{
|
|
private GameObject player;
|
|
|
|
[SerializeField] private SerialVector3 _respawnPosition;
|
|
[SerializeField] private GameEvent _playerDeath;
|
|
[SerializeField] private GameEvent _playerRespawn;
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
// Checks to make sure other collider is the Player. Sets player variable as Player game object and starts the coroutine.
|
|
if (other.gameObject.name == "Player")
|
|
{
|
|
player = other.gameObject;
|
|
StartCoroutine(RespawnPlayer());
|
|
}
|
|
}
|
|
|
|
// Corountine to trigger death animation, disable player movement, play fade, respawn player at last safe position and then play fade in animation and re-enable player movement.
|
|
IEnumerator RespawnPlayer()
|
|
{
|
|
_playerDeath.Raise();
|
|
|
|
// yield return new WaitForSeconds(0.5f);
|
|
|
|
// fadeScreen.GetComponent<Animator>().SetTrigger("fadeToBlack");
|
|
yield return new WaitForSeconds(1.5f);
|
|
|
|
// move player to respawn position
|
|
player.transform.position = _respawnPosition;
|
|
|
|
// fadeScreen.GetComponent<Animator>().SetTrigger("fadeToClear");
|
|
yield return new WaitForSeconds(0.5f);
|
|
|
|
_playerRespawn.Raise();
|
|
|
|
yield return null;
|
|
}
|
|
} |