IEnumerator MoveSubway() { SubwayCtrl subwayCtrl = null; foreach (var subway in arrSubwayCtrl) { subway.OnStartMoveToNextStation(timeToMoveStaion); if (subway.isHavePlayer) { subwayCtrl = subway; } } if (subwayCtrl) { float halfTimeMoveStation = timeToMoveStaion * 0.5f; DOTween.To(() => OffsetScrollCtrl.speed, x => OffsetScrollCtrl.speed = x, 4f - (timeToMoveStaion * 0.2f), halfTimeMoveStation); yield return(new WaitForSeconds(halfTimeMoveStation)); DOTween.To(() => OffsetScrollCtrl.speed, x => OffsetScrollCtrl.speed = x, 0f, halfTimeMoveStation); yield return(new WaitForSeconds(halfTimeMoveStation)); } else { yield return(new WaitForSeconds(timeToMoveStaion)); } foreach (var subway in arrSubwayCtrl) { subway.OnOpenWaitCloseDoor(timeToDoor, timeToWaitInStation, timeToWaitDoor); } yield return(new WaitForSeconds(timeToDoor + timeToWaitInStation + (timeToWaitDoor * 2))); StartCoroutine(MoveSubway()); }
void OnSubwayLeaveStation(SubwayCtrl subwayCtrl) { StationCtrl station = arrStationCtrl[subwayCtrl.stationID]; station.SetColliderActive(subwayCtrl.subwaySide, true); }
void OnSubwayArriveStation(SubwayCtrl subwayCtrl) { StationCtrl station = arrStationCtrl[subwayCtrl.stationID]; station.SetColliderActive(subwayCtrl.subwaySide, false); }