Nexus VR Character Model ran into a major problem with dynamic heads with facial animations. After a lot of testing, it was found to be a general incompatibility with the “Enable Camera” setting as part of the facial animations. When “Enable Camera” is active - even if the player does not have their camera on, even if the player does not have a dynamic head - you become unable to alter any Motor6D.Transforms within the character.
To reproduce the issue, the following LocalScript can be put into StarterCharacterScripts. When “Enable Camera” is on, Transform will be locked. When “Enable Camera” is off, every part of the body will spin.
local CharacterModel = script.Parent
local Humanoid = CharacterModel:WaitForChild("Humanoid")
local Animator = Humanoid:WaitForChild("Animator") :: Animator
--Stop all animations.
--Nexus VR Character Model does this to avoid teleporting. It also allows the code below to modify Transform.
CharacterModel:WaitForChild("Animate"):Destroy()
for _, Track in Animator:GetPlayingAnimationTracks() do
Track:AdjustWeight(0, 0)
Track:Stop(0)
end
Animator.AnimationPlayed:Connect(function(Track)
Track:AdjustWeight(0, 0)
Track:Stop(0)
end)
--Constantly set the Transform.
--Can be done on BindToRenderStep as well.
while true do
for _, Motor6D in CharacterModel:GetDescendants() do
if not Motor6D:IsA("Motor6D") then continue end
Motor6D.Transform = Motor6D.Transform * CFrame.Angles(0, math.rad(5), 0)
end
task.wait(0.1)
end
Expected behavior
I expect Motor6D.Transform to ideally work for every joint, or at a minimum every joint that isn’t the neck. I don’t expect for unrelated parts of the body to be locked. Even if this is intended, this behavior is very inconsistent based on a simple game setting.