Why is half block ray normal returning odd numbers

For some reason, when my mouse is on the top surface of a block, it returns weird z values for the normal

print(normal)
if normal.X ~= 0 or normal.Z ~= 0 then -- Placed on side of slab
	return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, SLAB_OFFSET + part.Size.Y, 0)
elseif normal.Y > 0 then -- Placing on top face of slab
	print("PLACING ON TOP")
	return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, SLAB_OFFSET, 0)
else -- Placing on bottom face of slab				
	return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, GRID_SIZE + SLAB_OFFSET, 0)
end

Which means, it thinks I am placing on the side, when I am trying to place on top

1 Like