public void UpdateByController(float rotationY)
 {
     if (state == states.DEAD)
     {
         return;
     }
     if (!grounded)
     {
         ResetRotations();
         if (startJumping + 0.2f < Time.time)
         {
             Vector3 pos = transform.position;
             pos.y   += 1;
             grounded = Physics.Linecast(pos, groundCheck.position, 1 << LayerMask.NameToLayer("Floor"));
             if (grounded)
             {
                 OnFloor();
             }
         }
     }
     else
     {
         RaycastHit coverHit;
         if (Physics.Linecast(transform.position, groundCheck.position, out coverHit, 1 << LayerMask.NameToLayer("Floor")))
         {
             if (sliderEffect.speed != 0)
             {
                 SliderFloor sliderFloor = coverHit.transform.gameObject.GetComponent <SliderFloor>();
                 if (sliderFloor == null)
                 {
                     sliderEffect.speed = 0;
                     madRoller.Play("run");
                 }
             }
             if (coverHit.transform.tag == "floor")
             {
                 rotationZ = coverHit.transform.up.x * -30;
                 rotationX = coverHit.transform.eulerAngles.x;
             }
             else
             {
                 ResetRotations();
             }
         }
     }
     characterMovement.UpdateByController(rotationY);
 }
Пример #2
0
    public void UpdateByController(float rotationY)
    {
        if (state == states.COLLISIONED)
        {
            if (collisionToRight)
            {
                collisionedValue -= Time.deltaTime * collisionReactValue;
                if (collisionedValue < 0)
                {
                    madRoller.Play("run");
                    state = states.RUN;
                }
                else
                {
                    rotationY = (collisionedValue);
                }
            }
            else
            {
                collisionedValue += Time.deltaTime * collisionReactValue;
                if (collisionedValue > 0)
                {
                    madRoller.Play("run");
                    state = states.RUN;
                }
                else
                {
                    rotationY = (collisionedValue);
                }
            }
        }
        else
        if (!grounded)
        {
            ResetRotations();
            if (startJumping + 0.2f < Time.time)
            {
                Vector3 pos = transform.position;
                pos.y   += 1;
                grounded = Physics.Linecast(pos, groundCheck.position, 1 << LayerMask.NameToLayer("Floor"));
                if (grounded)
                {
                    OnFloor();
                }
            }
        }
        else
        {
            RaycastHit coverHit;
            if (Physics.Linecast(transform.position, groundCheck.position, out coverHit, 1 << LayerMask.NameToLayer("Floor")))
            {
                if (sliderEffect.speed != 0)
                {
                    SliderFloor sliderFloor = coverHit.transform.gameObject.GetComponent <SliderFloor>();
                    if (sliderFloor == null)
                    {
                        sliderEffect.speed = 0;
                        SetRunState();
                    }
                }
                float lastRotX = 0;
                if (coverHit.transform.tag == "floor")
                {
                    rotationZ = coverHit.transform.up.x * -30;
                    rotationX = coverHit.transform.eulerAngles.x;
                    if (rotationX != lastRotX)
                    {
                        madRoller.Play("little_jump");
                        lastRotX = rotationX;
                    }
                }
                else
                {
                    ResetRotations();
                }
            }
        }


        characterMovement.UpdateByController(rotationY);
    }