IEnumerator OneShotShake(float amount, float speed, float damping, float time) { float startingTime = time, startingAmount = amount; ShakeLayer l = new ShakeLayer(amount, speed, damping); shakeLayers.Add(l); while (l.amount > 0) { yield return(0); time -= Time.deltaTime; l.amount = startingAmount * (time / startingTime); } //Wait to clear l.amount = 0; while (l.lastPosition != Vector2.zero) { yield return(0); } shakeLayers.Remove(l); }
IEnumerator CannonShake(ShipRevamped s) { while (s.cannon.charge == 0) { yield return(0); //Wait for input } ShakeLayer l = new ShakeLayer(cannonShake.amount, cannonShake.speed, cannonShake.damping); shakeLayers.Add(l); while (s.cannon.charge > 0 && s != null) { yield return(0); } //Wait to clear l.amount = 0; while (l.lastPosition != Vector2.zero) { yield return(0); } shakeLayers.Remove(l); }