I’m not sure if my code is efficient as possible. I want to keep it as optimized as i can.
Here is the code:
sub(function() is just coroutine wrap
local function startHitbox(duration)
sub(function()
local pastTime = tick()
local connection
local attachmentTable = {}
for i,v in pairs(sword:GetChildren()) do
if v.Name == "DmgPoint" then
local lastWorldPos = v.WorldPosition
attachmentTable[v] = {lastPos = lastWorldPos}
end
end
connection = RunService.RenderStepped:Connect(function()
if (tick() - pastTime) >= duration then
connection:Disconnect()
end
for i,v in pairs(attachmentTable) do
local ray = Ray.new(i.WorldPosition, v.lastPos)
local hit, pos = workspace:FindPartOnRay(ray, char)
if hit then
--hit stuff
end
v.lastPos = i.WorldPosition
end
end)
end)
end