❔ slide bug in csharp script in unity

im making a game in unity and i have a bug in my script where my character glides over the ground when i hold Space + left or right + and then let go of left or right


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Smoovement : MonoBehaviour
{
    public float walkSpeed;
    public float moveInput;
    public bool isGrounded;
    private Rigidbody2D rb;
    public LayerMask groundmask;
    public float jumplength;
    public PhysicsMaterial2D bounceMat, normalMat;
    public bool canJump = true;
    public float jumpValue = 0.0f;

    
    public float distance = 0.6f;
    public LayerMask wallLayer;
    public bool isTouchingWallL = false;
    public bool isTouchingWallR = false;




    // Start is called before the first frame update
    void Start()
    {
        rb = gameObject.GetComponent<Rigidbody2D>();
        
    }

    // Update is called once per frame
    void Update()
    {
        moveInput = Input.GetAxisRaw("Horizontal");

        if(jumpValue == 0.0f && isGrounded){
        rb.velocity = new Vector2(moveInput * walkSpeed, rb.velocity.y);
        }
        isGrounded = Physics2D.OverlapBox(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f),
        new Vector2(0.9f, 0.4f), 0f, groundmask);

        isTouchingWallR = Physics2D.Raycast(transform.position, Vector2.right, distance, wallLayer);
        isTouchingWallL = Physics2D.Raycast(transform.position, Vector2.left, distance, wallLayer);


        if(jumpValue >= 0 && !isGrounded && (isTouchingWallL || isTouchingWallR))
        {
            rb.sharedMaterial = bounceMat;
        }else
        {
            rb.sharedMaterial = normalMat;
        }


        
        if(Input.GetKey("space") && isGrounded && canJump)
        {
            jumpValue += 0.3f;
        
        }

        if(Input.GetKeyDown("space") && isGrounded && canJump)
        {
            rb.velocity = new Vector2(0.0f, rb.velocity.y);
           
        }

        if(jumpValue >= jumplength && isGrounded)
        {
            float tempx = moveInput * walkSpeed;
            float tempy = jumpValue;
            rb.velocity = new Vector2(tempx, tempy);
            Invoke("ResetJump", 0.3f);
            
        }
        
        if(Input.GetKeyUp("space")){
            if(isGrounded){
                rb.velocity = new Vector2(moveInput * walkSpeed, jumpValue);
                jumpValue = 0.0f;
            }
            canJump = true;
        }
        if(jumpValue == 0){
            canJump = true;
        }


    }

    void ResetJump()
    {
        canJump = false;
        jumpValue = 0;
        

    }

    void OndrawnGizmosSelected()
    {
        Gizmos.color = Color.green;
        Gizmos.DrawCube(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f), new Vector2(0.9f, 0.2f));

    }
}
Was this page helpful?