local origin = Vector3.new(0, 10, 0)
local direction = Vector3.new(0, -1, 0) * 100
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Blacklist
params.FilterDescendantsInstances = {workspace.Ignore}
params.IgnoreWater = true
local result = workspace:Raycast(origin, direction, params)
if result then
local hitPart = result.Instance
local hitPos = result.Position
local hitNormal = result.Normal
local material = result.Material
print("Hit:", hitPart:GetFullName())
print("Position:", hitPos)
print("Normal:", hitNormal)
print("Material:", material)
local marker = Instance.new("Part")
marker.Size = Vector3.new(0.2, 0.2, 0.2)
marker.Anchored = true
marker.CanCollide = false
marker.Position = hitPos
marker.BrickColor = BrickColor.Red()
marker.Material = Enum.Material.Neon
marker.Parent = workspace
local normalLine = Instance.new("Part")
normalLine.Anchored = true
normalLine.CanCollide = false
normalLine.Size = Vector3.new(0.1, 0.1, 3)
normalLine.CFrame = CFrame.lookAt(hitPos, hitPos + hitNormal)
normalLine.Position = hitPos + hitNormal * 1.5
normalLine.Material = Enum.Material.Neon
normalLine.BrickColor = BrickColor.Blue()
normalLine.Parent = workspace
else
print("Raycast hit nothing.")
end