Почему при добавлении ForceMode2D.Impulse в AddForce , объект перестает прыгать?

Как писали на некоторых форумах, чтобы прыжок был не таким резким, а более реалистичным, плавным нужно использовать rb.AddForce(Vector2.up * jumpForce,ForceMode2D.Impulse);.
Но проблема заключается в том, что, добавляя второй аргумент, прыжок не выполняется. С чем это связано?

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

public class Controller : MonoBehaviour
{
    
    public Rigidbody2D rb;
    public SpriteRenderer spriteFlip;

    public float groundRadius = 0.07f;
    public LayerMask whatIsGround;
    public bool IsGrounded = false;
    public Transform groundCheck;

    public float velocity = 5f;
    public float jumpforce = 1000;
   
   
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        
    }


    private void FixedUpdate()
    {        
        MovingX();
        
    }

    public void Update()
    {
        CheckingGround();        
        Jump();
    }

    void MovingX()
    {
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), 0) * velocity;
        

        if (moveInput.x > 0)
        {
            spriteFlip.flipX = false;
        }else if(moveInput.x < 0)
        {
            spriteFlip.flipX = true;
        }

        if (Input.GetKey(KeyCode.LeftShift))
        {
            velocity = 15f;
        }
        else
        {
            velocity = 5f;
        }

        rb.MovePosition(rb.position + moveInput * Time.fixedDeltaTime);
        
    }

    void Jump()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow) && IsGrounded)
        {            
            rb.AddForce(Vector2.up * jumpforce); //Работает
            //rb.AddForce(Vector2.up * jumpforce,ForceMode2D.Impulse); не работает
            
        }
    }

    void CheckingGround()
    {
        IsGrounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
        if (!IsGrounded)
            return;
    }

}

Ответы (0 шт):