Reproduction Steps
Currently, as of 1/31/22
, the Workspace.FallenPartsDestroyHeight
feature does not Destroy()
models like it should, as documented in its API documentation. Instead, it simply does not Destroy()
the model when the last part is destroyed below the destroy-height.
This issue only seems to occur when a Humanoid
is parented to the model. Otherwise, it gets Destroy()
ed as expected.
STEPS TO REPRODUCE:
Download & open this place file : FallenPartsDestroyHeight_Repro.rbxl (32.3 KB)
- Run a playsolo test. Observe the two unanchored parts near the edge of the baseplate.
- Kick both parts into the void. Observe that the
Model
instance they are parented to isDestroy()
ed when the last part isDestroy()
ed, as expected. - Stop the playsolo test. Add a
Humanoid
instance to the model. - Repeat step 2, but observe that the model is not
Destroy()
ed, even though both parts were kicked into the void.
Expected Behavior
It is expected that a Model
will always be Destroy()
ed when the last part of it is destroyed by the Workspace.FallenPartsDestroyHeight
feature.
Not doing so causes unexpected behaviors in developer’s code, which leads to game-breaking bugs. In my case, it bricked an entire server because my round logic errored with
Model:SetPrimaryPartCFrame() failed because no PrimaryPart has been set or the PrimaryPart no longer exists. Please set Model.PrimaryPart before using this.
when it went to move player’s avatars from the lobby into the map.
Actual Behavior
Workspace.FallenPartsDestroyHeight
does not Destroy()
a Model
when the last part in it falls below it and is Destroy()
ed, if there is a Humaonid
instance parented to it.
Workaround
Manually doing this behavior myself by listening to part ancestry changes.
Issue Area: Engine
Issue Type: Other
Impact: Moderate
Frequency: Constantly
Date First Experienced: 2022-01-31 00:01:00 (-05:00)