For a long jump I would use Humanoid.PlatformStand to disable the humanoid which has too much “air friction” and use Velocity or :ApplyImpulse . Jumping mostly follow projectile motion because the path is up and down (parabolic) caused by gravity. To get the Vector3 Direction you can get the Up depending how much you want to go Vector3.new(0,5000,0)-- up, and also use humanoid.MoveDirection in combination, adding these vectors together results in the jump direction.
Quite vague, it depends how you want to effect the parts which depends on the scenario which is the input.
For example:
Part → Input: MousePosition/MouseData → Therefore BodyPosition or AlignPosition, example use case and project: Dragging objects
Space Rocket/Jet pack → Input Movement direction ex: Up = Vector3.new(0,1,0)–> Therefore linear velocity (constant speed goal), or body force or vector force if acceleration is wanted, can also be more realistic.