Lineforces vs Bodyvelocity - ODM Support

Hey folks, So I been making this thing from an Anime called ODM gear (aot), and I been using Bodyforces and Lineforces. However, I wanted to know if this was truly the best way. Should I be using Bodyvelocity instead?

Only reason I didn’t use bodyvelocity is because I didn’t understand the math, so if I need to use it, anyway one of you could point me to the right direction?

BodyVelocity would require renderstepped or something like tweening on server side to recreate the bezier effect of curving around whatever your gears rope attatched to. not too familiar with lineforces but assuming the documentation gif means it readjusts based off realtime pos lineforces seems 1000x better. it moreorless just comes down to how visually satisfying you make it e.g camera effects

Most other games used Bodyvelocity and I been recommended to avoid Lineforces due to the lack of configuration of speed, driftspeed, grapplespeed, etc. It just gives me a lack of control.

I’ve been trying Bodyvelocity out, but I’m not sure what would be the best way to smooth it out and allow it to well, work well. Could you point me to the right direction with a basic script that explains what bodyvelocity needs to work efficiently, I already got the target position and character and everything, now I just need to make it work.

I’ve never made an ODM system before. It’s more-or-less trial and error until you get the movement you like. You’re going to obviously want to tween the bodyvelocity in a bezier curve route.
This module is something you’ll most likely want. BézierTweening | Simple tweening along bezier curves You will also need to know which direction they will curve in via holding down A/D keys and make it curve in that direction, However if you want it to work more flexibly via say you’re going Left and you want it so if you press the D key you want it to slow them then you would need to use CFrame Lerping instead.

This is my first time dealing with Bezier Curves.

I’m curious, how would I incorporate cubic bezier curves into this with only 2 anchor points. (player detacher and target).

And how would I make it curve to the left or right if they press A or D?

And if I want the ODM to move the player, is there a way to do that with Bezier curves? Or should I simply use Bezier Curves for the looks and Bodyvelocity for the actual movement? I just need the basics to keep myself on track.

You will need a third vector at the midpoint with an offset based off target lookvector y and offsetting based off whether player has pressed A/D local midpoint = (hrpPos + targetPos) / 2
Once you have the mid position you want to offset it, this needs to be done based off the lookvector of either target or player so that its working off the local axis and not global axis. e.g you wouldn’t want it to send you Z if the targetpos is in that direction or you would just move linear to the target

So what you are saying is;

I need to get the midpoint, and that’s the general hook right there, however, if I needed to do something such as let them turn left or right, I need to move that part with lookvectors? I’m still a little confused, any articles you can point me to that explain this or could you explain it more in depth with some code and notes that might help me understand?

midpoint doesnt need a part, you only need a vector3 which can be achieved with the code i posted above. Lookvectors describe the direction of faces. It allows you to get the orientation desired.
example:

local midpoint = (hrpPos + targetPos) / 2
local cf = HRP.CFrame
local lv = cf.lookVector
midpoint = midpoint + (lv * Vector3.new(Desired Offset)).Position

above is untested not 100% sure if that’s the correct wording but that should achieve the middle of two positions with an offset position based off the direction you want the player to curve e.g if its A then we want them to go left so you would apply an offset where player would move to the left Side. the same for the right side.

Okay, so how would the desired offset work?

Say, when the hook is first moving towards the target, it should be moving left and right, when it reaches it, it turns into a straight line. Finally, if the player presses a the hook moves to the right, if they press d the hook moves to the left as the hook needs to move to the opposites.

My question is how to figure out the best desired offset for each thing.