protected override void ComputeVelocity() { Vector2 move = Vector2.zero; move.x = Input.GetAxis("Horizontal"); if (Input.GetButtonDown("Jump") && grounded) { velocity.y = jumpTakeOffSpeed; } else if (Input.GetButtonUp("Jump") && onWall) //wall jump { velocity.y = jumpTakeOffSpeed; velocity.x = jumpTakeOffSpeed; print("wall jump"); //robotEnergy.WallJump(); } else if (Input.GetButtonDown("Jump") && !doubleJumpUsed) //double jump { velocity.y = jumpTakeOffSpeed; doubleJumpUsed = true; } else if (Input.GetButtonUp("Jump")) { if (velocity.y > 0) { velocity.y = velocity.y * 0.5f; } robotEnergy.DoubleJump(); } else if (Input.GetButtonDown(KeyCode.J.ToString()) && !grounded) //dash { if (move.x > 0) { move.x = 15; } else { move.x = -15; } robotEnergy.Dash(); } else if (Input.GetButton(KeyCode.K.ToString())) { if (velocity.y < 5) { velocity.y += 0.75f; } robotEnergy.Jetpack(); } else if (grounded) { //replenish double jump doubleJumpUsed = false; } bool flipSprite = (spriteRenderer.flipX ? (move.x > 0.01f) : (move.x < -0.01f)); if (flipSprite) { spriteRenderer.flipX = !spriteRenderer.flipX; } animator.SetBool("grounded", grounded); animator.SetFloat("velocityX", Mathf.Abs(velocity.x) / maxSpeed); targetVelocity = move * maxSpeed; }
protected override void ComputeVelocity() { Vector2 move = Vector2.zero; move.x = Input.GetAxis("Horizontal"); if (Input.GetButtonDown("Jump") && grounded) { velocity.y = jumpTakeOffSpeed; } else if (Input.GetButtonDown("Jump") && onWall) //wall jump { velocity.y = jumpTakeOffSpeed; onWall = false; //velocity.x = jumpTakeOffSpeed; isWallJump = true; print("wall jump"); spriteRenderer.flipX = !spriteRenderer.flipX; //robotEnergy.WallJump(); } else if (Input.GetButtonDown("Jump") && !doubleJumpUsed) //double jump { velocity.y = jumpTakeOffSpeed; doubleJumpUsed = true; robotEnergy.DoubleJump(); } else if (Input.GetButtonUp("Jump")) { if (velocity.y > 0) { velocity.y = velocity.y * 0.5f; } } else if (Input.GetButtonDown(KeyCode.J.ToString())) //dash { isDash = true; robotEnergy.Dash(); } else if (Input.GetButton(KeyCode.K.ToString())) { if (velocity.y < 5) { velocity.y += 0.75f; } robotEnergy.Jetpack(); } else if (grounded) { //replenish double jump doubleJumpUsed = false; } bool flipSprite = (spriteRenderer.flipX ? (move.x > 0.01f) : (move.x < -0.01f)); if (flipSprite) { spriteRenderer.flipX = !spriteRenderer.flipX; } animator.SetBool("grounded", grounded); animator.SetFloat("velocityX", Mathf.Abs(velocity.x) / maxSpeed); if (onWall) { velocity.y = 0; } if (isWallJump) { print(wallJumpActiveFrame); if (wallJumpActiveFrame < 8) { wallJumpActiveFrame += 1; move.x = -1; } else if (wallJumpActiveFrame < 16) { wallJumpActiveFrame += 1; move.x = -0.5f; } else { isWallJump = false; wallJumpActiveFrame = 0; } } if (isDash) { if (dashActiveFrame < 20) { print("velocity x: "); print(velocity.x); if (!grounded) { velocity.y = 0.5f; } if (!spriteRenderer.flipX) { move.x = 1.75f; } else if (spriteRenderer.flipX) { move.x = -1.75f; } dashActiveFrame++; } else { isDash = false; dashActiveFrame = 0; } } targetVelocity = move * maxSpeed; }