using System.Collections; using System.Collections.Generic; using UnityEngine; public class Air : ActiveBlock { private List FallenPlayers = new List(); public override int GetInitative() { return -1; } public override IEnumerator OnWalkedOnByPlayer(Character player, Vector3 moveDirection) { player.stuck = true; FallenPlayers.Add(player); StartCoroutine(player.AnimateToPosition(transform.position + Vector3.down * 10,Character.Animation.Hit, 1)); StartCoroutine(LerpScale(player.transform, Vector3.zero, 1)); yield return new WaitForSeconds(1); player.gameObject.SetActive(false); player.transform.localScale = Vector3.one; isFinished = true; } public override IEnumerator OnRoundEnd(PlayerData[] allPlayers) { foreach (Character player in FallenPlayers) { player.gameObject.SetActive(true); player.respawnCharacter(transform.position); } FallenPlayers.Clear(); isFinished = true; Destroy(gameObject); yield break; } private IEnumerator LerpScale(Transform target, Vector3 endScale, float time) { Vector3 startScale = target.localScale; float elapsedTime = 0; while(elapsedTime < time) { target.localScale = Vector3.Slerp(startScale, endScale, (elapsedTime / time)); yield return new WaitForEndOfFrame(); elapsedTime += Time.deltaTime; } target.localScale = endScale; } }