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); }
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); }
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) { 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); }