Erratic Jumping with GetKeyDown

I’m making a 2.5d platformer - here’s the script for player movement:

import UnityEngine

class PlayerControl (MonoBehaviour): 
	
	public speed = 100;
	distToGround as single = 0.0
	
	def Start():
		distToGround = collider.bounds.extents.y
		
	def isGrounded():
		return Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1)
		
	def FixedUpdate():
		horiz_move = Input.GetAxis('Horizontal')
		v3 = Vector3(horiz_move * speed * Time.deltaTime, 0.0, 0.0)
		rigidbody.AddForce((v3*100))
		
		if Input.GetKeyDown('space'):
			rigidbody.velocity += Vector3(0.0, 2000 * Time.deltaTime, 0.0)

The problem is that pressing space to jump only works about half the time.

I’ve tried changing FixedUpdate() to Update() - that makes it so that half the time it jumps normally, and half the time it jumps only a couple inches in the air.

Why don’t you use CharacterController? Most people tend not to use physics based movement for the player because it can be difficult and usually not very flexible for a unique main player.