I’m trying to cast a ray that goes from the player’s head, to a position on the screen. (This is not the exact mouse position, this is the mouse position with an offset.)
I figured getting the direction to raycast using ScreenPointToRay, and whilst this works, it’s only precisely going where I set it to go when I set the origin of the ray to the Origin of the ScreenPointToRay, like so:
local raycastResult = workspace:Raycast(UnitRay.Origin, UnitRay.Direction * 999, raycastParams)
However, the issue with this is I believe it’s casting from the camera, which is not what I want, I want it to cast from the player’s head to said position on the screen.
function Shoot()
local Char = Player.Character
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
raycastParams.IgnoreWater = true
raycastParams.FilterDescendantsInstances = {workspace.Ignore, Player.Character}
local UnitRay = Camera:ScreenPointToRay(Mouse.X, Mouse.Y)
local raycastResult = workspace:Raycast(UnitRay.Origin, UnitRay.Direction * 999, raycastParams)
if raycastResult then
local part = Instance.new("Part", workspace.Ignore)
part.Position = raycastResult.Position
part.Anchored = true
part.Size = Vector3.new(0.1,0.1,0.1)
end
end
Here’s what I tried additionally:
local raycastResult = workspace:Raycast(Char.Head.Position, (UnitRay.Direction - UnitRay.Origin) * 999, raycastParams)
--No idea where this ray ends up.
local raycastResult = workspace:Raycast(Char.Head.Position, UnitRay.Direction * 999, raycastParams)
--Ends up offset from where it should be