IEnumerator shake()
    {
        float waitTime = Random.Range(shakeThreholdMinMax.x, shakeThreholdMinMax.y);

        yield return(new WaitForSeconds(waitTime));

        shakeY = Random.Range(shakeYMinMax.x, shakeYMinMax.y);
        transform.localPosition = new Vector3(transform.localPosition.x, shakeY, transform.localPosition.z);

        if (trainManager != null)
        {
            trainManager.TrainShake();
        }

        StartCoroutine(shake());
    }