public void InitialiseElevator(StateOfElevator initialState, float lowHeight, float highHeight) { minHeight = lowHeight; maxHeight = highHeight; stateOfElevator = initialState; }
void ElevatorControl() { //This controls the rising and falling of the elevator switch (stateOfElevator) { case (StateOfElevator.notInitialized): break; case (StateOfElevator.elevatorRetract): if (Time.time < timeArriveAtTop + pauseAtTop) { break; } else { Destroy(gameObject); break; //timeKilled = Time.time; //timeWaitingToRespawn = delayBeforeRespawn; //transform.position = new Vector3(transform.position.x, minHeight, +5f) ; //stateOfElevator = StateOfElevator.elevatorWaiting; //goto case StateOfElevator.elevatorWaiting; } case (StateOfElevator.elevatorExtrude): if (Time.time < timeSpawn + pauseAfterSpawn) { break; } else { stateOfElevator = StateOfElevator.elevatorRising; goto case StateOfElevator.elevatorRising; } case (StateOfElevator.elevatorRising): if (transform.position.y < maxHeight) { transform.position += new Vector3(0f, Time.fixedDeltaTime * platformSpeed, 0f); break; } else { timeArriveAtTop = Time.time; stateOfElevator = StateOfElevator.elevatorRetract; goto case StateOfElevator.elevatorRetract; } /*case(StateOfElevator.elevatorWaiting): * if (Time.time < timeKilled + timeWaitingToRespawn) * { * break; * } else * { * timeSpawn = Time.time; * transform.position = new Vector3(transform.position.x, minHeight, 0f) ; * stateOfElevator = StateOfElevator.elevatorExtrude; * goto case StateOfElevator.elevatorExtrude; * } */ } }
void ElevatorControl() { //This controls the rising and falling of the elevator switch (stateOfElevator) { case (StateOfElevator.elevatorUp): //pause at the top if (Time.time < timeArriveAtTop + pauseAtTop) { break; } else { timeDescendStart = Time.time; stateOfElevator = StateOfElevator.elevatorFalling; goto case StateOfElevator.elevatorFalling; } case (StateOfElevator.elevatorFalling): //fall down to a given height, or until it hits something, or for a minimum length of time if (Time.time < timeDescendStart + timeFall) { //The goal position is determined by lerp yPositionGoal = Mathf.Lerp(maxHeight, minHeight, (Time.time - timeDescendStart) * oneOverTimeFall); //Move the block down elevatorTransform.position = new Vector3(elevatorTransform.position.x, yPositionGoal, 0.0f); break; } else { // elevatorTrans.rigidbody.isKinematic=false; timeArriveAtBottom = Time.time; elevatorTransform.position = new Vector3(elevatorTransform.position.x, minHeight, 0.0f); stateOfElevator = StateOfElevator.elevatorDown; goto case StateOfElevator.elevatorDown; } case (StateOfElevator.elevatorDown): //pause at bottom if (Time.time < timeArriveAtBottom + pauseAtBottom) { break; } else { timeRiseStart = Time.time; stateOfElevator = StateOfElevator.elevatorRising; goto case StateOfElevator.elevatorRising; } case (StateOfElevator.elevatorRising): if (Time.time < timeRiseStart + timeRise) { //The goal position is determined by lerp yPositionGoal = Mathf.Lerp(minHeight, maxHeight, (Time.time - timeRiseStart) * oneOverTimeRise); //Move the block down elevatorTransform.position = new Vector3(elevatorTransform.position.x, yPositionGoal, 0.0f); break; } else { timeArriveAtTop = Time.time; elevatorTransform.position = new Vector3(elevatorTransform.position.x, maxHeight, 0.0f); stateOfElevator = StateOfElevator.elevatorUp; goto case StateOfElevator.elevatorUp; //break; } } }