- Home /
Question by
Robs · Jan 16, 2014 at 10:15 PM ·
2djumpphysics 2d
Why does my 2d player stick to the floor when he lands?
Hey guys,
I am running into a bug in my 2d platformer. Whenever my player lands from a jump, he pauses for a moment before he continues to move. The only time it doesn't happen is when I set the physics material for the ground or player to 0 friction, but when I do that my player slides as if on ice. Could someone take a look at my character movement script and let me know what I am doing wrong?
using UnityEngine;
using System.Collections;
public class CharacterMovement : MonoBehaviour {
public Transform groundCheck;
public LayerMask whatIsGround;
float jumpForce = 800.0f;
float moveForce = 50.0f;
float maxSpeed = 8.0f;
bool onGround = false;
bool jump = false;
float groundRadius = 0.2f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Check for ground
onGround = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
if (Input.GetKeyDown ("space") && onGround) {
jump = true;
}
}
void FixedUpdate () {
// Set movement speed
float inputRate = Input.GetAxisRaw ("Horizontal");
// Move player
if (inputRate * rigidbody2D.velocity.x < maxSpeed) {
rigidbody2D.AddForce (Vector2.right * inputRate * moveForce);
}
if (Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed) {
rigidbody2D.velocity = new Vector2 (Mathf.Sign (rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
}
// Jump
if (jump){
rigidbody2D.AddForce(new Vector2(rigidbody2D.velocity.x, jumpForce));
jump = false;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Character doesn't jump repeatedly 1 Answer
2d Beat Em Up Jump Functionality 0 Answers
2D Sandbox physics problem 1 Answer
Jumping from a floor to another floor (2D) 2 Answers
Accelerating speed 2 Answers