// Update is called once per frame
    void Update()
    {
        gravidy         = -(2 * maxJumpHight) / Mathf.Pow(timeToJumpApex, 2);
        MaxJumpVelocity = Mathf.Abs(gravidy) * timeToJumpApex;
        if (controler.colinfo.above || controler.colinfo.bellow)
        {
            velocity.y = 0;
        }
        if (moveInput.y > 0 && controler.colinfo.bellow)
        {
            velocity.y = MaxJumpVelocity;
        }
        //TODO fix this so its not using old input system
        if (Input.GetKeyUp(KeyCode.W))
        {
            if (velocity.y > minJumpVelocity)
            {
                velocity.y = minJumpVelocity;
            }
        }

        float TargetvelocityX = moveInput.x * moveSpeed;

        velocity.x = Mathf.SmoothDamp(velocity.x, TargetvelocityX, ref velocityXsmothing, (controler.colinfo.bellow) ? accelerationTimeGrounded : accelerationTimeAirborne);
        if (applyGrav == true)
        {
            velocity.y += gravidy * Time.deltaTime;
        }
        controler.Move(velocity * Time.deltaTime);
    }
    /// <summary>
    /// force in the posidt direction
    /// </summary>
    private IEnumerator backforce(Vector3 vectorDirection, float type)
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, vectorDirection * type, Mathf.Infinity, whattohit);

        Debug.DrawRay(transform.position, vectorDirection * type, color: Color.blue, radis);
        if (hit.collider != null)
        {
            rb.velocity = Vector3.zero;
            for (int i = 0; i < forceAplydTime; i++)
            {
                p.velocity = ((AttackDire * vectorDirection) * -1) * force * Time.deltaTime;
                Debug.Log(vectorDirection);
                p.applyGrav = false;
                controler.Move(p.velocity);
                yield return(new WaitForSeconds(0.1f));

                p.applyGrav = true;
            }
        }
    }