Ejemplo n.º 1
0
    void MovementInput()
    {
        Vector3 axis     = GetMovingInput();
        Vector3 downAxis = new Vector3();

        downAxis.x = (Input.GetKeyDown(KeyCode.A)) ? -1 : (Input.GetKeyDown(KeyCode.D)) ? 1 : 0;
        downAxis.z = (Input.GetKeyDown(KeyCode.W)) ? 1 : (Input.GetKeyDown(KeyCode.S)) ? -1 : 0;
        if (dashCheckTime > 0)
        {
            if (downAxis != Vector3.zero)
            {
                if (downAxis == lastAxis)
                {
                    dashCheckTime = 0;
                    if (!myUnit.GetAction().GetBehaviour("WakeUp").IsPlaying() && movement.isOnGround)
                    {
                        myUnit.GetAction().UseSkill("Roll", true);
                    }
                    return;
                }
                else
                {
                    lastAxis      = downAxis;
                    dashCheckTime = dashCheckMaxTime;
                }
            }
            else
            {
                dashCheckTime -= Time.deltaTime;
            }
        }
        else
        {
            lastAxis      = downAxis;
            dashCheckTime = dashCheckMaxTime;
        }
        if (movement.paramaterSet != maxSpeed)
        {
            movement.paramaterSet = maxSpeed;
        }
        bool sprint = !Input.GetKey(KeyCode.LeftShift);

        if (!zoomIn && myUnit.GetState() == UnitInfo.UnitState.idle)
        {
            if (axis != Vector3.zero)
            {
                float speed = (sprint) ? maxSpeed : walkSpeed;
                axis   = Camera.main.transform.TransformVector(axis);
                axis.y = 0;
                axis.Normalize();
                //movement.Move(axis, speed, accelation);
                movement.RotateTo(Quaternion.LookRotation(axis), turnSpeed);
                movement.Move(transform.forward, speed, accelation);
            }
            else
            {
                if (movement.IsMoving())
                {
                    //movement.Stop();
                    movement.StopSmooth(breakAccel);
                }
            }
        }
        else if (zoomIn && myUnit.GetState() != UnitInfo.UnitState.die)
        {
            if (axis != Vector3.zero)
            {
                float speed = (sprint) ? maxSpeed : walkSpeed;
                axis   = Camera.main.transform.TransformVector(axis);
                axis.y = 0;
                axis.Normalize();
                movement.Move(axis, speed, accelation);
            }
            else if (myUnit.GetState() == UnitInfo.UnitState.idle)
            {
                if (movement.IsMoving())
                {
                    //movement.Stop();
                    movement.StopSmooth(breakAccel);
                }
            }
            Vector3 forward = Camera.main.transform.forward;
            forward.y = 0;
            if (forward == Vector3.zero)
            {
                movement.RotateTo(forward, 90);
            }
            else
            {
                movement.RotateTo(Quaternion.LookRotation(forward), 90);
            }
        }
    }