public void Spin(bool startSpin = false) { _spinSequence.Kill(); //first dfeine if it will be clockwise or counterclockwise var signal = Random.value > 0.5f ? 1 : -1; //get a random duration var duration = Random.Range(GameManager.DURATION_MIN_SPIN, GameManager.DURATION_MAX_SPIN); //get a random spin speed var speed = Random.Range(GameManager.SPEED_MIN_SPIN, GameManager.SPEED_MAX_SPIN); if (startSpin) { _spin = GameManager.SPEED_MIN_SPIN * signal; speed = GameManager.SPEED_MAX_SPIN; duration = GameManager.DURATION_MIN_SPIN; } speed *= signal; //set the spin motion _spinning = true; _spinSequence.SetEase(Ease.OutBounce); _spinSequence.Append(DOTween.To(() => _spin, x => _spin = x, speed, duration).OnComplete(() => { Spin(); })); }