Lua raycasting

This article is tagged with: Lua raycasting and lua

lua raycasting

local function fireLaser()
-- Set an origin and directional vector
local rayOrigin = caster.Position
local rayDirection =, -100, 0)

-- Build a "RaycastParams" object and cast the ray
local raycastParams =
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 =, (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"
tweenTile(hitPart, 1)
-- Trigger next caster cycle

This article is tagged with: Lua raycasting and lua