Пример #1
0
 void MoveStart()
 {
     currentState = FuncStates.MovingStart;
     if (useTrigger)
     {
         trigger.SetActive(false);
     }
 }
Пример #2
0
 void Awake()
 {
     currentState  = startState;        // set door position to picked state
     startPosition = transform.position;
     if (currentState == FuncStates.AjarMovingStart || currentState == FuncStates.AjarMovingTarget)
     {
         tempVec            = ((transform.position - targetPosition.transform.position).normalized * (Vector3.Distance(transform.position, targetPosition.transform.position) * percentAjar * -1)) + transform.position;
         transform.position = tempVec;
         if (useTrigger)
         {
             trigger.SetActive(false);
         }
     }
     rbody             = GetComponent <Rigidbody>();
     rbody.isKinematic = true;
     SFXSource         = GetComponent <AudioSource>();
     stopSoundPlayed   = false;
     movedToLocation   = false;
     dist = 0;
     if (useOnlyActivatesTrigger)
     {
         trigger.SetActive(false);
     }
 }
Пример #3
0
    void FixedUpdate()
    {
        switch (currentState)
        {
        case FuncStates.Start:
            if (!movedToLocation)
            {
                transform.position = startPosition;
                rbody.velocity     = Vector3.zero;
                movedToLocation    = true;
            }
            break;

        case FuncStates.Target:
            if (!movedToLocation)
            {
                transform.position = targetPosition.transform.position;
                rbody.velocity     = Vector3.zero;
                movedToLocation    = true;
            }
            break;

        case FuncStates.MovingStart:
            goalPosition = startPosition;
            //transform.position = Vector3.MoveTowards (transform.position, goalPosition, (speed * Time.deltaTime));
            rbody.WakeUp();
            //rbody.velocity = ((goalPosition - transform.position) * speed);
            dist    = speed * Time.deltaTime;
            tempVec = ((transform.position - goalPosition).normalized * dist * -1) + transform.position;
            rbody.MovePosition(tempVec);
            if ((Vector3.Distance(transform.position, goalPosition)) <= 0.02f)
            {
                if (currentState == FuncStates.MovingStart)
                {
                    currentState = FuncStates.Start;
                }
                else
                {
                    currentState = FuncStates.Target;
                }

                if (!stopSoundPlayed)
                {
                    SFXSource.Stop();
                    SFXSource.loop = false;
                    SFXSource.PlayOneShot(SFXStop);
                    stopSoundPlayed = true;
                }
                if (useTrigger)
                {
                    trigger.SetActive(true);
                }
            }
            break;

        case FuncStates.MovingTarget:
            goalPosition = targetPosition.transform.position;
            //transform.position = Vector3.MoveTowards (transform.position, goalPosition, (speed * Time.deltaTime));
            rbody.WakeUp();
            //rbody.velocity = ((goalPosition - transform.position) * speed);
            //rbody.velocity = new Vector3(0,-1f,0);
            //rbody.velocity = (goalPosition - transform.position) * speed;
            //rbody.MovePosition(goalPosition);
            dist    = speed * Time.deltaTime;
            tempVec = ((transform.position - goalPosition).normalized * dist * -1) + transform.position;
            rbody.MovePosition(tempVec);
            if ((Vector3.Distance(transform.position, goalPosition)) <= 0.01f)
            {
                if (currentState == FuncStates.MovingStart)
                {
                    currentState = FuncStates.Start;
                }
                else
                {
                    currentState = FuncStates.Target;
                }

                if (!stopSoundPlayed)
                {
                    SFXSource.Stop();
                    SFXSource.loop = false;
                    SFXSource.PlayOneShot(SFXStop);
                    stopSoundPlayed = true;
                }

                if (useTrigger)
                {
                    trigger.SetActive(true);
                }
            }

            break;
        }
    }