local LP = game:GetService("Players").LocalPlayer local RS = game:GetService("ReplicatedStorage") local out = {} local function add(s) table.insert(out, s) end -- all dummy-ish models add("DUMMY instances in workspace:") for _, d in ipairs(workspace:GetDescendants()) do if d:IsA("Model") and string.find(string.upper(d.Name), "DUMMY", 1, true) then local root = d:FindFirstChild("HumanoidRootPart") or d.PrimaryPart local hum = d:FindFirstChildOfClass("Humanoid") add(" " .. d:GetFullName() .. " pos=" .. tostring(root and root.Position) .. " hp=" .. tostring(hum and hum.Health)) end end -- tagged add("Tagged TrainingDummy:") local cs = game:GetService("CollectionService") for _, d in ipairs(cs:GetTagged("TrainingDummy")) do local root = d:FindFirstChild("HumanoidRootPart") or d.PrimaryPart add(" " .. d:GetFullName() .. " pos=" .. tostring(root and root.Position)) end local Cam = require(RS.Shared.Camera) add("Shared.Camera keys:") for k, v in pairs(Cam) do add(" " .. tostring(k) .. " " .. type(v)) end local Util = require(LP.PlayerScripts.Combat.Util) local cam = workspace.CurrentCamera add("camera type=" .. tostring(cam.CameraType) .. " cframe=" .. tostring(cam.CFrame)) local ray0 = Util.GetAimRay() add("aimray0 dir=" .. tostring(ray0.Direction) .. " origin=" .. tostring(ray0.Origin)) -- try to steer with CurrentCamera local savedType, savedCF = cam.CameraType, cam.CFrame local dummies = cs:GetTagged("TrainingDummy") local target = dummies[1] local tpos = (target:FindFirstChild("HumanoidRootPart") or target.PrimaryPart).Position local origin = ray0.Origin cam.CameraType = Enum.CameraType.Scriptable cam.CFrame = CFrame.lookAt(origin, tpos) task.wait(0.2) local ray1 = Util.GetAimRay() add("target pos=" .. tostring(tpos)) add("aimray1 dir=" .. tostring(ray1.Direction) .. " origin=" .. tostring(ray1.Origin)) add("intended dir=" .. tostring((tpos - origin).Unit)) local ap = Util.AimPoint() add("AimPoint=" .. tostring(ap)) cam.CameraType = savedType cam.CFrame = savedCF print(table.concat(out, "\n"))