So I've followed along with Mike Geig's 2D Character Controller ([https://www.youtube.com/watch?v=Xnyb2f6Qqzg][1]) and I've found that if you encounter a corner it launches you into the air. I originally thought that it was due to the player holding down the jump button, but after adding measures to prevent jumping more than once while the button is held it still happens. Anyone else have this issue or has had it?
[Here is an example][2] of the issue. You can see a regular jump, but then when the character jumps near the corner it just adds on a lot more velocity.
Here is the movement and jump code I'm using:
void MovePlayer ()
{
float moveX = Input.GetAxis ("Horizontal");
grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
touchingWall = Physics2D.OverlapCircle (wallCheck.position, wallRadius, whatIsGround);
animator.SetBool ("Ground", grounded);
rigidBody.velocity = new Vector2 (moveX * maxSpeedX, rigidBody.velocity.y);
animator.SetFloat ("Speed", Mathf.Abs (moveX));
// Flips the player left and right
if (moveX > 0 && !facingRight) {
Flip ();
} else if (moveX < 0 && facingRight) {
Flip ();
}
}
void Jump () {
if (grounded && Input.GetAxis ("Jump") > 0.01f && canJumpAgain) {
lastXVelocity = rigidBody.velocity.x;
canJumpAgain = false;
animator.SetBool ("Ground", false);
//rigidBody.velocity = new Vector2 (0, 0);
//rigidBody.AddForce (new Vector2 (0, jumpSpeed), ForceMode2D.Force);
rigidBody.velocity = new Vector2 (lastXVelocity, jumpSpeed * Input.GetAxis ("Jump"));
}
if (rigidBody.velocity.y < 0) {
rigidBody.velocity += Vector2.up * Physics2D.gravity.y * (fallMultiplier - 1) * Time.deltaTime;
}
else if (rigidBody.velocity.y > 0 && !Input.GetButton ("Jump")) {
rigidBody.velocity += Vector2.up * Physics2D.gravity.y * (lowJumpMultiplier - 1) * Time.deltaTime;
}
if (Input.GetAxis ("Jump") == 0f) {
canJumpAgain = true;
}
}
Any help would be appreciated! Thanks!