public void DoorOpened() { ///승객 내림처리 float boardingDelay = 0; int idx = 0; int stayfloor = (int)GetFloor(); switch ((MOVE_STATE)moveDirState) { case MOVE_STATE.Up: stayfloor = Mathf.RoundToInt(currentFloor); break; case MOVE_STATE.Stop: stayfloor = (int)currentFloor; break; case MOVE_STATE.Down: stayfloor = Mathf.RoundToInt(currentFloor); break; } while (idx < listPassenger.Count) { var p = listPassenger[idx]; if (p.destFloor == stayfloor) { listPassenger.RemoveAt(idx); boardingDelay += Random.Range(0.6f, 1.0f); float refTime = Mathf.Abs((p.startFloor - p.destFloor) * (ElevatorAcademy.height) / ElevatorAcademy.speed / 2f); AddReward(refTime / (Time.fixedTime - p.timeWaiting)); AddReward(0.0001f); p.Dispose(); building.AddDestPassenger(); } else { ++idx; } } SetTransitionDelay(Event.DoorCloseStart, boardingDelay); }