|
|
- using System.Collections;
- using UnityEngine;
-
- public class Air : ActiveBlock
- {
- public float fallingAnimationTime = 1.0f;
- public float fallingDistance = 10.0f;
- public bool burnAfterReading = true;
-
- int DeleteCount = 2;
-
- public override int GetInitative()
- {
- return -1;
- }
-
- public override IEnumerator OnWalkedOnByPlayer(Character player, Vector3 moveDirection)
- {
- player.stuck = true;
- player.respawnNeeded = true;
-
- //Very hacky, but it solved a weird bug where falling off the left-hand-side of the track didn't kill you, it just got you stuck down there forever
- //You have to leave the camera's sight in order to die from falling
- yield return StartCoroutine(player.AnimateToPosition(transform.position + Vector3.down * fallingDistance,Character.Animation.Hit, fallingAnimationTime));
- yield return StartCoroutine(player.AnimateToPosition(transform.position + Vector3.down * 100, Character.Animation.Hit, 0.01f));
-
- player.transform.localScale = Vector3.one;
- }
-
- public override IEnumerator OnRoundEnd(PlayerData[] allPlayers)
- {
- isFinished = true;
-
- if (burnAfterReading)
- {
- DeleteCount--;
- if (DeleteCount == 0)
- 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;
- }
- }
|