The red dot is the actual centre of the screen. My ADS is NEVER in the middle of the screen and it’s genuinely extremely annoying because that is where bullets land.
The way my ADS system works is via a part in the gun sights, and then this line of code:
local TWorldS = viewmodel.PrimaryPart.CFrame:ToObjectSpace(tool.Sight["Aim"].CFrame):Inverse()
local aimcf = (camera.CFrame*walksway*jumpsway*strafesway*CFrame.Angles(math.rad(sway.Y*swaysize/2),math.rad(sway.X*swaysize)/10,math.rad(sway.Z*swaysize)/2))+(camera.CFrame.UpVector*(((TWorldS.Y))))+(camera.CFrame.LookVector*((TWorldS.Z)))+(camera.CFrame.RightVector*((TWorldS.X)+(-(sway.X*swaysize)/75)))
if tool.Root.Alpha.Value > 0 then -- alpha is to make a smooth "tween" into ADS/out of it. it's not an issue with this as its precisely one
swaysize = .2
viewmodel.HumanoidRootPart.CFrame = viewmodel.HumanoidRootPart.CFrame:Lerp(aimcf, tool.Root.Alpha.Value)
else
swaysize = .8
end
I’ve tried extremely hard to line up the “AIM” part with the reticle of my optic. Currently, I clone the optic’s reticle and move it back to use it as the “AIM” part, so I heavily doubt it’s an issue with the reticle.
The game if you are interested in experimenting with it:
You’re probably running into a floating point precision issue. Not sure if it will work, but I’d try replacing the Aim part with an Attachment that’s parented to and offset from the reticle as it will more accurately represent the reticle’s CFrame as an origin
My solution, I guess. It’s still not entirely accurate, but it’s much more accurate then the other one. The multiplication by -1.7 is to centre it. Probably a much better way to go about doing this; but it works well enough for what I need. Cheers for replying.