lua raycasting
snippet in lua

lua raycasting

user8688

EXPAND 
local function fireLaser()
	-- Set an origin and directional vector
	local rayOrigin = caster.Position
	local rayDirection = Vector3.new(0, -100, 0)
 
	-- Build a "RaycastParams" object and cast the ray
	local raycastParams = RaycastParams.new()
	raycastParams.FilterDescendantsInstances = {caster.Parent}
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)
 
	if raycastResult then
		local hitPart = raycastResult.Instance
		-- Check if the part resides in a folder, that it's fully visible, and not locked
		if hitPart.Parent == workspace.Tiles and hitPart.Transparency == 0 and not hitPart.Locked then
			hitPart.Locked = true
			-- Position beam ending attachment at hit point
			caster.BeamEndAttachment.Position = Vector3.new(0, (hitPart.Position.Y-caster.Position.Y)+raycastResult.Position.Y, 0)
			-- Start beam and burn effect
			caster.Beam.Enabled = true
			caster.BeamEndAttachment.BurnEffect.Enabled = true
			-- After a delay, trigger tile "melt"
			wait(TILE_MELT_DELAY)
			tweenTile(hitPart, 1)
		end
	end
	-- Trigger next caster cycle
	moveCaster()
end