IEnumerator _Shake(AnimationCurve curve) { Vector3 startPos = transform.position; float duration = curve.lastTime(); yield return StartCoroutine(pTween.RealtimeTo(duration, 0f, duration, t => { float magnitude = (curve.Evaluate(t) / 360f) * Camera.main.orthographicSize; Vector3 randPos = new Vector3(Random.Range(-magnitude, magnitude), 0, Random.Range(-magnitude, magnitude)); transform.position = startPos + randPos; t += shakeStayTime / Time.timeScale; })); transform.position = startPos; }