I have a server script in this NPC and its suppose to look at the closest player, the problem is when I rotate the NPC and the player jumps it tilts it's head sideways to the right but tracks the player correctly when just walking around
local function observePlayer() local cFrame0 = neck.C0 while true do local player = findClosestPlayer() if player then local look = dummy.UpperTorso.CFrame.LookVector local facingDirection = (player.HumanoidRootPart.Position - dummy.Head.Position).Unit local dot = look:Dot(facingDirection) local angle = math.deg(math.acos(dot)) local isNotAbove = dummy.PrimaryPart.CFrame:ToObjectSpace(player.PrimaryPart.CFrame).Y < 2 -- can be used to detect if dummy is above local isInFront = dummy.PrimaryPart.CFrame:ToObjectSpace(player.PrimaryPart.CFrame).Z < 0 if isInFront and angle <= 60 then local unit = -(dummy.PrimaryPart.CFrame.p - player.PrimaryPart.Position).unit neck.C0 = cFrame0 * CFrame.new(Vector3.new(0,0,0), unit) * CFrame.Angles(math.rad(dummy.PrimaryPart.Orientation.X), -math.rad(dummy.PrimaryPart.Orientation.Y), 0) end end wait() end end