BodyVelocity is depreciated, so I wouldn’t use it at all. As the documentation says, you should be using LinearVelocity, which is great for applying a constant force to an object which doesn’t have a specific target in mind. I’d use this one over AlignPosition for when I want something a little less strict. For those times when you do want to move something somewhere specific, you’d use AlignPosition. I like this one for when I don’t care about how something gets somewhere; just that it gets to that specific point. For both, however, they do occasionally get stuck if there’s something in-between, so don’t expect them to make any maneuvers around objects on their own.
The Move method is more for NPCs that you want walking. I’d use this if the thing you’re trying to move is an NPC or a player, since it will also play their walking animations. Unless you want to fling them somewhere against their volition (eg. getting caught in an explosion). If it’s NPCs we’re talking about, you might want to look into pathfinding to use in conjunction.
All in all, I have very little idea of what “custom movement” entails and all 3 of the options you’ve mentioned are valid ways of moving some thing without making it look janky. Heck, I don’t think they’re even the best option if the only thing you care about is visually moving something from one point to another. Which one to use will depend on more specific details that I didn’t catch in your post.
Thanks so much man.im just still confused as to how people get it to work with stuff work together, as i dont fully understand how to change them to that sorta stuff
Custom movement in Roblox can be implemented using LinearVelocity constraints with Attachments on the HumanoidRootPart. Set up a MovementController with a LinearVelocity/Attachment pair, set VelocityConstraintMode to Vector, and apply movement through VectorVelocity. Use raycasts for detection, LinearVelocity for force application, and CFrame manipulation for precise positioning (e.g., vaulting).
Here are a few examples from a system I created:
Ledge Grabbing:
Raycast during freefall to detect ledges, attach LinearVelocity to HumanoidRootPart via Attachment to freeze position, enable A/D movement along wall, allow climb/drop with spacebar.
Vaulting:
Raycast forward to detect < 4.1 height obstacles, anchor character, tween CFrame position over obstacle while playing vault animation.
Dash:
Create LinearVelocity/Attachment on HumanoidRootPart, apply force in look vector direction when triggered.