コード例 #1
0
 public void InitialiseElevator(StateOfElevator initialState, float lowHeight, float highHeight)
 {
     minHeight       = lowHeight;
     maxHeight       = highHeight;
     stateOfElevator = initialState;
 }
コード例 #2
0
    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;
             *      }
             */
        }
    }
コード例 #3
0
    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;
            }
        }
    }