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.Transform
s 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.