I literally looked at the Roblox developer site/wiki and other posts exactly like the one I’m posting, but for some reason, I can’t understand how to work it. The D and P are both really large numbers, so I do not believe that’s the problem. This is the script inside the NPC model.
while true do
wait(1)
local pos = script.Parent.HumanoidRootPart.BodyGyro
pos.MaxTorque = Vector3.new(math.huge,math.huge,math.huge)
pos.CFrame = CFrame.new(pos.Parent.Position,game.Workspace.Part.Position)
end
Humanoids don’t really like to be rotated against their will. They will constantly try to right themselves, so it would be wise to set their state to something like physics.
Yea, I did need to change it to physics. But also for some reason, I needed to create a new BodyGyro and edit that one, instead of editing one already in the NPC. I’m not sure why, but it started working when I did.
It probably originally wasn’t working because your D value was too high. In BodyGyros, P stands for power, so the higher this value is, the more force it rotates with. D, on the other hand, stands for Dampener. This will apply a force to rotate in the opposite direction and makes the NPC turn slower. If this is too high, it may not rotate at all. If P is sufficiently high, the NPC would still rotate. If D is too high, the NPC won’t.