I have a function that does an afterimage effect, which instances new parts all named "Afterimage" which are the exact same size of each of the player's limbs. However, when im trying to use a while true loop in order to add transparency to the afterimage it adds transparency to only one part named Afterimage. So I was wondering if there is a way to union parts using UnionAsync on parts of the same name? The code concerned with is from lines 73 - 83
local rs = game:GetService("ReplicatedStorage")
local dash = rs:WaitForChild("Dash")
local TweenService = game:GetService("TweenService")
dash.OnServerEvent:Connect(function(player)
local model = Instance.new("Model")
model:Clone()
model.Name = "WaveAndAfter"
model.Parent = game.workspace
local char = player.Character or player.CharacterAdded:Wait()
local wave = script.Mesh:WaitForChild("Wave"):Clone() or script.Mesh:FindFirstChild("Wave"):Clone()
wave.CFrame = char:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0, -3, 0)
wave.Orientation = wave.Orientation + Vector3.new(-90, 0, 0)
wave.Parent = model
local fx = script["Electricity Shock Sound Effect"]:Clone()
fx.Parent = wave
fx:Play()
local bolt1 = script.Folder:WaitForChild("Bolts2"):Clone() or script.Folder:FindFirstChild("Bolts2"):Clone()
bolt1.Parent = wave
local bolt2 = script.Folder:WaitForChild("Bolts3"):Clone() or script.Folder:FindFirstChild("Bolts3"):Clone()
bolt2.Parent = wave
local goal = {}
goal.Size = wave.Size + Vector3.new(10,10,1)
goal.Orientation = wave.Orientation + Vector3.new(0, 3600)
goal.Transparency = 1
local info = TweenInfo.new(2)
local tween = TweenService:Create(wave,info,goal)
tween:Play()
for count, objectsInCharacter in ipairs(char:GetChildren()) do
local afterimage = {}
local head = {}
if objectsInCharacter:IsA("MeshPart") or objectsInCharacter:IsA("Part") then
if objectsInCharacter.Name ~= "HumanoidRootPart" and objectsInCharacter.Name ~= "Wave" and objectsInCharacter.Name ~= "Head" then
afterimage = Instance.new("Part")
afterimage.Size = objectsInCharacter.Size
afterimage.Name = "Afterimage"
afterimage:ClearAllChildren()
afterimage.Transparency = 0.8
afterimage.Color = Color3.fromRGB(10, 105, 220)
afterimage.Material = "Glass"
afterimage.CanCollide = false
afterimage.Anchored = true
afterimage.Massless = true
afterimage.CFrame = objectsInCharacter.CFrame
afterimage.Parent = game.Workspace
elseif objectsInCharacter.Name == "Head" then
head = script.Mesh.Head:Clone()
head.Name = "AfterimageHead"
head.Transparency = 0.8
head.Color = Color3.fromRGB(10, 105, 220)
head.Material = "Glass"
head.Anchored = true
head.CanCollide = false
head.Massless = true
head.CFrame = char.Head.CFrame
head.Parent = game.Workspace
end
end
end
wait(0.3)
local parts = game.Workspace:GetChildren()
--this was my attempt to change the transparency of all parts. I found that if i used a while true loop it would still only affect one part instead of every part, so i decided to this. however, its still not the intended effect because it scans for one part, plays the for loop, then goes onto the next part.
for i = 1, #parts do
if parts[i].Name == "Afterimage" then
parts[i].Transparency = parts[i].Transparency + 0.1
wait(0.1)
parts[i].Transparency = parts[i].Transparency + 0.1
wait(0.1)
parts[i].Transparency = parts[i].Transparency + 0.1
wait(0.1)
parts[i].Transparency = parts[i].Transparency + 0.1
end
end
wait(2)
bolt1:Destroy()
bolt2:Destroy()
end)
