コード例 #1
0
 private void SetCharacterState()
 {
     if (characterCombat.isAttacking)
     {
         return;
     }
     if (characterMovement.IsGrounded())
     {
         if (rigidBody2D.velocity.x == 0)
         {
             characterMovement.SetMovementState(CharacterMovementController.MovementStates.Idle);
         }
         else if (rigidBody2D.velocity.x > 0)
         {
             characterMovement.facingDirection = CharacterMovementController.FacingDirection.Right;
             characterMovement.SetMovementState(CharacterMovementController.MovementStates.Running);
         }
         else if (rigidBody2D.velocity.x < 0)
         {
             characterMovement.facingDirection = CharacterMovementController.FacingDirection.Left;
             characterMovement.SetMovementState(CharacterMovementController.MovementStates.Running);
         }
     }
     else
     {
         characterMovement.SetMovementState(CharacterMovementController.MovementStates.Jumping);
     }
 }
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        public override AbstractState HandleUpdate(PlayerStateMachine stateMachine, Animator animator, CharacterMovementController playerController)
        {
            float directionX = Input.GetAxisRaw("Horizontal");

            if (playerController.IsGrounded())
            {
                float currentYPos = stateMachine.transform.position.y;
                distanceFalling = Mathf.Abs(Mathf.Abs(startYPos) - Mathf.Abs(currentYPos));

                // Schnelle Bewegung beim springen, also abrollen
                if (moveMultiplierAir >= MIDDLE_MOVE_FACTOR_AIR)
                {
                    return(PlayerStateMachine.landRollingState);
                }


                if (distanceFalling < minFallHeight)
                {
                    Debug.Log("Land in Idle" + distanceFalling + " < " + minFallHeight);

                    return(PlayerStateMachine.idleState);
                }

                if (directionX == 0)
                {
                    Debug.Log("Land in landIdle");
                    return(PlayerStateMachine.landIdleState);
                }
                else
                {
                    Debug.Log("Land in landRunning");
                    return(PlayerStateMachine.landRunningState);
                }
            }

            // Move while jumping
            Move(stateMachine, playerController);

            return(null);
        }