Exemplo n.º 1
0
        public override AbstractState HandleUpdate(PlayerStateMachine stateMachine, Animator animator, CharacterMovementController playerController)
        {
            if (!Input.GetKey(KeyCode.DownArrow) || playerController.IsFalling())
            {
                return(PlayerStateMachine.duckingUpState);
            }

            return(null);
        }
        public override AbstractState HandleUpdate(PlayerStateMachine stateMachine, Animator animator, CharacterMovementController playerController)
        {
            if (playerController.IsFalling())
            {
                return(PlayerStateMachine.fallingState);
            }

            if (Input.GetKey(KeyCode.Space))
            {
                return(PlayerStateMachine.preJumpRunningState);
            }

            if (Input.GetKey(KeyCode.T) && playerController.IsGrounded())
            {
                //return PlayerStateMachine.attackingHeavyState;
                return(PlayerStateMachine.attackingCombo1State);
            }

            float directionX = Input.GetAxisRaw("Horizontal");

            if (directionX == 0 || directionX != stateMachine.currentDirectionX)
            {
                //check if stopping Animation
                float newPosX     = stateMachine.transform.position.x;
                float distanceRun = (startX >= newPosX ? startX - newPosX : newPosX - startX);
                if (distanceRun < QUICKSTOP_DISTANCE)
                {
                    if (directionX == 0)
                    {
                        return(PlayerStateMachine.idleState);
                    }
                    else
                    {
                        // Continue moving, stay in State
                    }
                }
                else
                {
                    // Stopping
                    return(PlayerStateMachine.stoppingState);
                }
            }



            // continue moving
            MoveXGrounded(stateMachine, playerController);

            return(null);
        }
        public override AbstractState HandleUpdate(PlayerStateMachine stateMachine, Animator animator, CharacterMovementController playerController)
        {
            if (playerController.IsGrounded())
            {
                return(PlayerStateMachine.runningState);
            }

            if (playerController.IsFalling() || playerController.IsGrounded())
            {
                PlayerStateMachine.fallingState.InitParameters(stateMachine.currentDirectionX, moveMultiplierAir);
                return(PlayerStateMachine.fallingState);
            }

            // Move while jumping
            Move(stateMachine, playerController);
            return(null);
        }
        public override AbstractState HandleUpdate(PlayerStateMachine stateMachine, Animator animator, CharacterMovementController playerController)
        {
            if (Input.GetKey(KeyCode.UpArrow) && playerController.LadderBelow())
            {
                return(PlayerStateMachine.climbingState);
            }
            if (Input.GetKey(KeyCode.DownArrow) && playerController.LadderBelow() && !playerController.IsGroundBelow())
            {
                return(PlayerStateMachine.climbingState);
            }
            if (Input.GetKey(KeyCode.DownArrow) && playerController.IsGrounded())
            {
                return(PlayerStateMachine.duckingState);
            }

            if (Input.GetKey(KeyCode.Space) && playerController.IsJumpingPossible())
            {
                return(PlayerStateMachine.preJumpIdleState);
            }

            if (Input.GetAxisRaw("Horizontal") != 0 && playerController.IsGrounded())
            {
                return(PlayerStateMachine.runningState);
            }

            if (playerController.IsFalling())
            {
                return(PlayerStateMachine.fallingState);
            }



            if (stateMachine.inputController.StartHeavyAttack())   //TODO erst "aufladen", dann angriff
            {
                return(PlayerStateMachine.attackingHeavyState);
            }
            if (stateMachine.inputController.IsLightAttack())
            {
                return(PlayerStateMachine.attackingCombo1State);
            }

            return(null);
        }