BODYTHRUST and Axis error

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I want the part to be able to move along the correct axis utilizing the proper body mover, in this case: BodyThrust[LOCAL].

  2. What is the issue? Include screenshots / videos if possible!
    The issue is that when I apply a force on the Y Axis using object/local thrust, which is what bodythrust does, then it does not rotate properly. It rotates properly on other axis’ with a noticeable change in the rotation when the part is initially rotated from 0,0,0 to begin with, or during a while/do.

  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I have tried using other body movers, but this is the only one that works the way I want it to so far the best. I also have to use local axis, but do not want to go through the whole ToObjectCFrame way because that didnt work well with needing the momentum applied, where it did not apply or utilize momentum. Body thrust uses momentum against forces the way I want.

I have tried rotating the part in ALL directions, and 90 and 180 degrees in ALL axis’ and applying the same forces, both positive and negative on the part. I notice the same errored outcome on the YAxis.

After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!

-- This is an example Lua code block
2 Likes

I am uploading another video showing what I am trying to explain likely better. It very well might be a bug. IDK But if you have insight let me know otherwise I may just report this as a bug. I even took a break and came back to it with my thought process blanked out and got the same results and same answers.
Thanks all


https://youtu.be/826qhkMeAXc

A default BodyThrust’s position is already (0,0,0) relative to the part, aka the part’s center of mass. By setting the location of the BodyThrust to the part’s position, you are setting the thrust’s offset relative to the part, NOT relative to the world.

If your part is that far away from world origin, and you set the thrust’s location to its position, the thrust will be really offset. An offset equivalent of world origin to the part, but local to the part itself.

Basically, never set the location of a BodyThrust to the position of the part you want to move. It’s not what you want.

1 Like

So then if I just leave the location alone, that means in theory the Z should actually rotate on the Y I hope. :stuck_out_tongue: Ill give it a try :slight_smile: Its always something simple! I had believed the location should be set to the parts cframe BECAUSE it is local. I didn’t realize it was an offset of the parts CFrame. Good to know! Ill post back what happens, and thank you very much for the response and help
P.S. I like the avatar btw :wink:

1 Like

Reading into it, in order to change bodythrust into a rotational force, it has to utilize that location vector. Therefore, I need to update that as well. That’s what I am understanding. So, bodythrust can be used both directionally and rotationally. Correct?

I verified on my end of this by leaving the location as is, and the part elevated when changing the Y, as in “directional” force not rotational.

I might have a solution. The force is a rotational force, BUT I can offset like you said as long as its within the parts collision area and is only offset once and not repeated. This way, the force WILL in fact be more rotational, but doesnt need to be updated ever tick like Im trying to do. I dont think it works like I thought but its still doable because of that offset in my situation. Ill let you all know how I make out testing an offset that is consistent with the axis that I need to rotate on. Hope that makes sense. I created a better “ball” model with 7k triangles so it rolls smoother too, that the default ball. Update soon!

Yes, so BodyThrust is basically a little rocket booster. How you offset it relative to the part’s center of mass (COM) changes the behavior. If its offset to one of the edges of the part, and the thrust is applied, it will become a torque, where as when its completely dead center of mass or aligned with a certain axis, it will be directional.

1 Like

What is your goal exactly? There might be a better solution than Thrust.

Thats exactly how I am seeing it now :slight_smile: I tried other bodymovers but this one is the only one that does what I need. I want a part that is rotational and works with other math that I have going on but also has a momentum to it where when I change directions, it slows down first, etc.

Other bodymovers I have tried have sudden changes that apply to my code or I even tried tweening as well as lerping the CFrame. This body mover works the best so far and knowing that offset is actually something I need BUT just need to applyit as an offset in the location I need it for it to become roational may be the answer :slight_smile: TY for your help btw, its appreciated very much!

EDIT: The way I was understanding it before it the exact opposite lol. I believed that setting it to the parts cframe would make it rotational whereas setting an offset would apply a force in that offset direction. Now I understand it better thanks to your example

So, it works as long as I have attachments along the 6 sides to reference with :slight_smile: Basically I am applying the torque using the offset depending on the way the part is rotated and now it all works so far in a while loop pretty good :slight_smile: Ill mark solved and the one you posted with the pic as a solution :slight_smile: