Impossible to have the part not be impacted by gravity, you’ll need to either have something counter it (like a bodymover) or anchor it and simulate manually (not use velocity).
You have your origin point O from where you launch your knife and your target point P-
Knife is some sort of part on the knife that is supposed to be affected by the velocity/rotVelocity.
Also this assumes the knife is straight at the start of the flight
Up=Vector3.new(0,1,0)
FlyDirection=(P-O).unit
Knife.Velocity=FlyDirection * KnifeSpeed --direction times magnitude
RotationDirection=(FlyDirection:Cross(Up)).unit --Perpendicular to FlightDirection and y-Axis
Knife.RotVelocity=RotationDirection * KnifeRotSpeed --direction times magnitude
KnifeRotSpeed is a speed of your choosing as is KnifeSpeed.
Pretty sure a BodyForce/VectorForce would do the trick (make sure VectorForce is relative to the world). Set it’s force to workspace.Gravity * part:GetMass(). If you have multiple parts, you’ll need to calculate all of their masses and add them together. I haven’t done this recently so I could be wrong about some of the details.
Doing it manually wouldn’t be too difficult, either, (okay the core idea is easy but figuring out the specifics is a bit tough) although it may not be as reliable in terms of hit detection. Essentially for manual movement you want to calculate a few things:
Before you begin moving it, calculate the time (TravelTime) it’ll take to get from A to B using the length of the vector. Magnitude / STUDS_PER_SECOND if I’m thinking correctly. This will also be useful with rotation as if you have a FULL_ROTATIONS_PER_SECOND value then you can calculate how many rotations will be done when it is traveling.
Move it every frame using a RunService signal (Stepped would be the right one, I think?). You could do this using PositionA:lerp(PositionB, (tick() - StartTime)/TravelTime) so everything will run at a constant speed. Handle rotation in a similar manner.
Raycast every frame to check whether the knife has hit something (because something may come into its path that wasn’t in it before)