Topic was automatically imported from the old Question2Answer platform.
Asked By
The_Hexagon
Could someone please explain to me why offsetting a force vector initially perpendicular to the z axis turns the rigid body on the x axis, does it only offset the origin of the vector if yes how do I fix this issue?
Then you’ll see that the position is actual an offset in global coordinate space.
Personally I only use apply_impulse but I assume (also according to the old Godot 2.x related post above) that add_force works in a similar fashion. (Sadly, the docs are sparse for add_force).
You get the global offset for a child object like this: $MyChild.global_transform.origin - global_transform.origin (I omitted the self. or $"." to the second global_transform adressing the “parent” itself as it is not needed here.)
Keep in mind that the force vector itself is in global space.
If you run into problems here then consider using apply_impulse instead repeatedly from inside _integrate_forces or _physics_process. Multiply the force by delta so the multiple impulses add up to the force over a second. The advantage is that these impulses can be adjusted in position and direction every physics frame.