Adjusting C0/C1 of Motor does not update part collisions

Reproduction Steps

I have attached a easily reproducible place file which demonstrates this issue. Play solo, wait a few seconds for door to open, and see that you can walk through it.

MotorPhysicsRepro.rbxl (41.5 KB)

Video demo: RobloxStudioBeta_kpA25pBf2R

Expected Behavior

After a motor moves a part, I would expect the collisions of that part to still be correct… I should run into it when I walk through it.

Actual Behavior

Instead, after a motor moves a part, it seems like the collisions are wonky… and if it moves it far enough away, I can walk through the entire thing. This is affecting some parts of Jailbreak that use welded doors, or things like a fire truck ladder raising up, etc.

Workaround

I expect the physics are not being calculated… when I resize the part, even by some small epsilon (featured in script… i.e. Vector3.new(1, 1, 1) * 1e-3) the physics seem to be re-calculated and I am stopped by the part again. This is the final step of the demo script which you can observe in the place file.

Issue Area: Engine
Issue Type: Other
Impact: Moderate
Frequency: Constantly
A private message is associated with this bug report

2 Likes

Thanks for the report. I filed a ticket to our internal database.

2 Likes

Hi! Sorry for the late reply.

The behavior your observing is the current intended behavior when C0/C1 are updated. We intentionally don’t update any of our internal collision data structures. This produces a “fast path” for animations that improves performance, with the side effect that animations don’t always produce physically correct simulation.

Our recommended workaround would be to use physics constraints to actuate the door. For example, adding a HingeConstraint to the door hinge, and using a servo or motor to move the door to the desired position. Basically, use physics constraints when you desire physically correct simulation.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.