Motor6D not listening to CurrentAngle since latest Roblox update

I have a simple script that I use to check the CurrentAngle of the Motor6Ds that I use as steering pivots in my dump truck’s front wheels. I have it set up so that the steering doesn’t return to centered when the controls are released so the driver can set the steering to whatever they want and use their fingers for the dump controls while driving.
It used to work great for a couple years until recently but I can’t be sure of the exact date since I haven’t been in the place for a couple weeks.
What happens now is I jump in the VehicleSeat (this script is in the VehicleSeat) and when I turn left or right the first couple of times the wheels rotate to the left or right until I stop the input, then they stay at that position. After that when I release the A or D inputs they will return to some random value. The value of l.CurrentAngle keeps printing the value where I first released the A or D keys and every time I release the controls goes back to that same value. If I jump off the seat and back on the steering will allow me to turn the wheels again, but after I release the controls it’ll go to a different value and stay there.
It seems the Motor6D.CurrentAngle isn’t getting updated properly like it used to until recently.
I’ve also left a screenshot of the script with the Output window. As you can see the l.CurrentAngle gets stuck, and I noticed that if I drive the truck over another object, the value will start going back to being read, but if I hit the object again, it’ll get stuck at a different value.
I’ve seen other posts from years ago that state that because Motors and Motor6Ds were used for animation they don’t replicate to the Server. My issue is that this setup worked for me for a couple years just fine.

20 Likes

Did you try using this?

https://developer.roblox.com/en-us/api-reference/function/Motor/SetDesiredAngle

I don’t know if it’s different internally

1 Like

Line 8 of the script sets l.DesiredAngle to l.CurrentAngle.

This version of the script has l and r set to local. I’ve tried setting all three variables in the top lines to local as well as made them server sided as well.

I read your image code, I am aware.

I can’t tell why it’s not working due to the lack of documentation but I am assuming SetDesiredAngle is there for a reason.

Did you try using that?

keep in mind that anything outside of Player.Character will not Replicate animation, even if the Player has NetworkOwnership

I tried using l.SetDesiredAngle instead of l.DesiredAngle & it says it isn’t a member of Motor6D. I’m not too great at scripting so I may be doing that wrong as I see that SetDesiredAngle is a Function of Motor6D instead of being a member of Motor6D.

The issue I have is that the script used to work fine with lines 8 & 9 making the value equal to l.CurrentAngle. When I set it using lines 12, 13, 16 & 17 it works fine as well every time I steer the truck. It seems that recently Motor6D CurrentAngle isn’t being updated continuously as it used to be.

I’ve looked at the Properties of the Motor6D when in Play mode in Studio. It does update properly when running as it changes to a different value each time I tap the A or D keys, but when the script reads l.CurrentValue it seems to get stuck on one value and keeps returning to that point.

This might explain why I was having issues of recent with Motor6d. I decided because I couldnt find the issue as to why it wasnt replicating on the server to just go ahead and switch to Weld C0.

I am having the same issue when trying to script with motors, after the recent update the currentangle property does not change on the server it stays at a 0 which makes it not usable for me.

this is a server script line FYI

script.Parent.Lights.Motor1.DesiredAngle = script.Parent.Lights.Motor1.CurrentAngle

which doesn’t keep the motor in place since the currentangle is not being updated on the server
Here u can see the currentangle property not changing on the server

Here is does change on the client

If any more info is needed please let me know.

3 Likes

Same issue here, i noticed that the replication stopped working entirely aswell, so i have to create a custom way of detecting changes every .stepped which creates a huge amount of lag which already is in my game due to the massive amount of parts and scripts it can have.


Please, if you’re going to be removing automatic replication for every single physics thing,
MAKE IT A BOOL OPTION!

Its going to be laggier making my own system rather than roblox doing it automatically for me. I dont care about the exploitable properties as there is no point in changing these in my game since there is no way you can possibly cheat.

3 Likes

I’ve also been experiencing issues with Motor6D replication on the server recently. I switched to HingeConstraints as I couldn’t find a fix.

1 Like

Which is fine except when using the suspension system I’m using. HingeConstraints are way too elastic and my wheels spring back and forth, not really accepting the normal Servo HingeConstraint controls.

1 Like

Have you tried to make a localscript that executes a RemoteEvent to a Server Script inside ServerScriptService?

But why should someone have to do that? I see it as an Engine Bug since it is a value that is still updating fine in game and in Studio, it just suddenly isn’t being read properly when a script goes to get that CurrentAngle value.

1 Like

I have been using motors for over 3 years and not once have they been an issue until now. I am really hoping a fix will be released to allow the currentAngle to replicate to the server as it has done for the past 3+ years, as this isn’t something as a developer we should have to try and work around.

7 Likes

This issue affected games within the brick battle community, which often have an option to toggle your character animations to the classic animations prior to 2015 or so. Suddenly only the LocalPlayer’s animations worked, while everyone else was just moving rigid bodies. I “fixed” it by making the animation LocalScript a PlayerScript that applies Motor6D changes regularly to the LocalPlayer’s character (changing DesiredAngle on each RenderStep) and slightly differently to everyone else from the LocalPlayer’s perspective (changing CurrentAngle on each RenderStep).

It’s not a very elegant solution.

2 Likes

Roblox broke Motor6D… Most of Ro-Aviation’s Aircraft no longer have working animations, Thanks for killing a community…

As far as most know, Roblox won’t fix this bug.

5 Likes

We have a ticket tracking the issue and are investigating. We haven’t pinpointed the cause yet.

If you can send us a place file with instructions we can use to reproduce this consistently, that would be extremely helpful.

4 Likes

@ContextLost I sent you a message with place file and instructions.

1 Like

From my experience, not only Motor6D is affected, but also the regular Motor object. When the DesiredAngle property is changed by a server script, the change is only visible on the client’s side, and on the server side the angle never changes.

5 Likes

motor6d bug repro.rbxl (22.7 KB)
Launch 2 players and use the buttons on player 2.

The client --> server replication used to work perfectly for motor6d’s, since this update, the propellers stopped rotating in my game.

Doors are also completely broken now aswell because of this issue and every single day, i am receiving messages about people being annoyed that these things are broken.

Client to server replication / setting the DesiredAngle manually on the server:

^ player2

Script setting the desired angle on the server:

3 Likes

@ContextLost, any word on a fix for this issue? I still find it occurring in my game.

1 Like