void FixedUpdate() { HandleVisibility(); if (escalator.GetTargetPointFromDestination(nextDestination) == transform.localPosition) { if (!escalator.reversed) { if ((int)nextDestination < 7) { nextDestination = (EscalatorPro.Destination)((int)nextDestination + 1); } else { nextDestination = (EscalatorPro.Destination) 0; } } else { //The escalator is reversed! ReverseDirection(); } BeginTween(); } if (escalator.stopped) { return; } var calculatedPos = transform.parent.TransformPoint(Vector3.MoveTowards(body.transform.localPosition, targetPos, escalator.speed * Time.deltaTime * 3)); body.MovePosition(calculatedPos); }