void OnCollisionEnter(Collision other) { if (other.gameObject.CompareTag("Ground") || other.gameObject.CompareTag("Ball") || other.gameObject.CompareTag("Sphere")) { isJumping = false; UpdateCollider(); playerAnim.SetBool("Jumping_b", false); } else if (other.gameObject.CompareTag("Stage")) { isJumping = false; isHoldingRope = false; UpdateCollider(); playerAnim.SetBool("Jumping_b", false); playerAnim.SetBool("Running_b", false); playerAnim.SetBool("Waving_b", true); // Turn the player's face to the audiences in background transform.Rotate(Vector3.up, -80.0f); transform.Translate(Vector3.right * (stage.transform.position - transform.position).x); gameManager.LevelComplete(); } else if (other.gameObject.CompareTag("Trampoline")) { currentRope = null; if (horse != null) { UpdateSpeedForBouncing(); } else { UpdateDirectionForBouncing(); } if (isJumping == false) { isJumping = true; jumpingDirection = JumpingDirection.Up; playerAnim.SetBool("Jumping_b", true); } } else { rbPlayer.isKinematic = true; playerAnim.speed = 0; sfxController.PlayCrashedSfx(); gameManager.LevelFailed(); } }
public void Motion(Vector2 inputAxis) { this.sideAxis = inputAxis.x; switch (this.state) { case MovementState.Disabled: this.state = MovementState.Disabled; break; case MovementState.Jumping: this.state = MovementState.Jumping; break; case MovementState.Landing: this.state = MovementState.Landing; break; case MovementState.Walking: case MovementState.Reversing: case MovementState.Stationary: if (inputAxis.y > 0.1f) { if (this.sideAxis > 0.1f) { this.direction = JumpingDirection.Right; } else if (this.sideAxis < -0.1f) { this.direction = JumpingDirection.Left; } else { this.direction = JumpingDirection.None; } airMovementController.Jump(MovementState.Stationary, jumpingSpeed, gravity, horizontalAirSpeed, direction); this.state = MovementState.Jumping; } else if (inputAxis.x > 0.1f) { this.state = MovementState.Walking; } else if (inputAxis.x < -0.1f) { this.state = MovementState.Reversing; } else { this.state = MovementState.Stationary; } break; default: this.state = MovementState.Stationary; break; } }
public void JumpBackwards(float horizontalAirSpeed, float gravity, float jumpingSpeed) { JumpingDirection backwardDirection = this.side == Side.Left ? JumpingDirection.Left : JumpingDirection.Right; airMovementController.Jump(MovementState.Disabled, jumpingSpeed, gravity, horizontalAirSpeed, backwardDirection); this.state = MovementState.Jumping; }
public Jump(MovementState behaviorOnLanding, float jumpingSpeed, float gravity, float horizontalAirSpeed, JumpingDirection direction) { this.behaviorOnLanding = behaviorOnLanding; this.jumpingSpeed = jumpingSpeed; this.gravity = gravity; this.horizontalAirSpeed = horizontalAirSpeed; this.direction = direction; }
private static int Sign(JumpingDirection direction) { switch (direction) { case JumpingDirection.Left: return(-1); case JumpingDirection.None: return(0); case JumpingDirection.Right: return(+1); } return(0); }
public void JumpToStage() { UseUserInput = true; isJumpToStage = true; isJumping = true; jumpingDirection = JumpingDirection.Up; playerAnim.SetBool("Jumping_b", true); // A fixed number for calculate collider when player jump up playerCollider.height -= 0.2f; rbPlayer.constraints |= RigidbodyConstraints.FreezePositionX; rbPlayer.AddForce(Vector3.up * jumpForce * 1.8f, ForceMode.Impulse); }
void UpdateDirectionForBouncing() { UserAction action = GetUserActionByTouch(); if (Input.GetKey(KeyCode.RightArrow) || action == UserAction.TouchRight) { jumpingDirection = JumpingDirection.Forward; } else if (Input.GetKey(KeyCode.LeftArrow) || action == UserAction.TouchLeft) { jumpingDirection = JumpingDirection.Backward; } else { jumpingDirection = JumpingDirection.Up; } }
void UpdateInputDebug() { // Prevent user's input if (UseUserInput == false) { return; } // If game is over if (gameManager.IsGameOver) { // Do nothing } else { // UserAction action = GetUserActionByMouse(); UserAction action = GetUserActionByTouch(); if (Input.GetKeyDown(KeyCode.Escape)) { gameManager.PauseResumeGame(); } // If game is paused if (gameManager.IsGamePaused) { // Do nothing } // If game continue else if (gameManager.IsLevelComplete == false) { // If jump to stage in Level 4 if (isJumpToStage) { MoveToStage(); return; } // If holding rope in Level 5 if (isHoldingRope) { transform.position = ropeCs.GetLooseEndPosition() - animationHoldingRopeOffset; if (Input.GetKey(KeyCode.Space) || action == UserAction.Tap || action == UserAction.SwipeLeft || action == UserAction.SwipeRight) { isHoldingRope = false; isJumping = true; transform.rotation = Quaternion.Euler(0, 90, 0); transform.position += (Vector3.forward * animationHoldingRopeOffset.z); jumpingDirection = JumpingDirection.Up; if (action == UserAction.SwipeRight) { jumpingDirection = JumpingDirection.Forward; } else if (action == UserAction.SwipeLeft) { jumpingDirection = JumpingDirection.Backward; } rbPlayer.isKinematic = false; rbPlayer.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); sfxController.PlayJumpSfx(); } if (Input.GetKey(KeyCode.RightArrow) || action == UserAction.TouchRight) { jumpingDirection = JumpingDirection.Forward; } else if (Input.GetKey(KeyCode.LeftArrow) || action == UserAction.TouchLeft) { if (isJumping) { transform.rotation = Quaternion.Euler(0, -90, 0); } jumpingDirection = JumpingDirection.Backward; } } // If jumping else if (isJumping) { if (horse != null) { if (Input.GetKey(KeyCode.LeftArrow) || action == UserAction.TouchLeft) { KeepLowBounce = true; } else { KeepLowBounce = false; } transform.position = new Vector3(horse.transform.position.x, transform.position.y, transform.position.z); } else { if (jumpingDirection == JumpingDirection.Forward) { MoveForward(); } else if (jumpingDirection == JumpingDirection.Backward) { MoveBackward(); } } } // If walk/run normally else { if (Input.GetKeyDown(KeyCode.Space) || action == UserAction.Tap || action == UserAction.SwipeLeft || action == UserAction.SwipeRight) { isJumping = true; jumpingDirection = JumpingDirection.Up; if (action == UserAction.SwipeRight) { jumpingDirection = JumpingDirection.Forward; } else if (action == UserAction.SwipeLeft) { jumpingDirection = JumpingDirection.Backward; } playerAnim.SetBool("Jumping_b", true); UpdateCollider(); rbPlayer.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); sfxController.PlayJumpSfx(); } if (Input.GetKey(KeyCode.RightArrow) || action == UserAction.TouchRight) { if (horse != null) { // Do nothing } else { if (isJumping) { jumpingDirection = JumpingDirection.Forward; } else { playerAnim.SetBool("Running_b", true); playerAnim.SetInteger("Direction_i", 1); MoveForward(); } } } else if (Input.GetKey(KeyCode.LeftArrow) || action == UserAction.TouchLeft) { if (horse != null) { horseCs.ChangeSpeed(false); } else { if (isJumping) { jumpingDirection = JumpingDirection.Backward; } else { playerAnim.SetBool("Running_b", true); playerAnim.SetInteger("Direction_i", -1); MoveBackward(); } } } else { playerAnim.SetBool("Running_b", false); playerAnim.SetInteger("Direction_i", 0); if (horse != null) { horseCs.ChangeSpeed(true); } } } } } }
public void Jump(MovementState behaviorOnLanding, float jumpingSpeed, float gravity, float horizontalAirSpeed, JumpingDirection direction) { this.jump = new Jump(behaviorOnLanding, jumpingSpeed, gravity, horizontalAirSpeed, direction); }