I have made a part trail system and it is working but it keeps adding multiple models and all I want is one model but I can’t since it would not work as intended. I made multiple ways but they use one model instead of multiple.
local function CFramePointRightSide(Pos1 ,Pos2)
local directionToFace = (Pos1 - Pos2).unit
local worldUp = Vector3.new(0,1,0)
local zAxisFace = directionToFace:Cross(worldUp)
local yAxisFace = directionToFace:Cross(zAxisFace)
return CFrame.fromMatrix(Pos1, directionToFace, yAxisFace, -zAxisFace)
end
Numbers = {
Vector3.new(1, 0, 0),
Vector3.new(1, 0.5, 0),
Vector3.new(1, 1, 0),
Vector3.new(0, 1, 0),
Vector3.new(0, 1, 1),
Vector3.new(0, 0, 1),
Vector3.new(0.5, 0, 1)
}
function TransformModel(Objects, Center, NewCFrame, Recurse)
local Objects = ((type(Objects) ~= "table" and {Objects}) or Objects)
for i, v in pairs(Objects) do
if v:IsA("BasePart") then
v.CFrame = NewCFrame:toWorldSpace(Center:toObjectSpace(v.CFrame))
end
if Recurse then
TransformModel(v:GetChildren(), Center, NewCFrame, true)
end
end
end
local function DoPoints(Length)
local model3 = Instance.new("Model")
model3.Name = "Omega Points Visualize"
model3.Parent = workspace
--Debris:AddItem(model3, 1)
for i, v in pairs(Numbers) do
local Part = Instance.new("Part")
Part.Name = "Part"
Part.Size = Vector3.new(Length,0.2, 0.2)
Part.Parent = model3
Part.Anchored = true
Part.CanCollide = false
Part.Color = Color3.fromRGB(218, 0, 5)
Part.Material = Enum.Material.Neon
Part.Shape = Enum.PartType.Cylinder
Part.CFrame = Part.CFrame * CFrame.new(Length,0,0)--omega_Lock.CFrame * CFrame.new(Length,0,0)--CFrame.new((Part.Size.X * (i - 1)), 0, 0)
--Debris:AddItem(Part, 1)
end
Debris:AddItem(model3, 3.5)
return model3
end
spawn(function()
local LastPlace = nil
local reached = false
while not reached do
local CurrentPlace = makePart.Position
if LastPlace then
spawn(function()
local Distance = (LastPlace - CurrentPlace).magnitude
local Length = Distance + 0--3.5
local PointsModel = DoPoints(Length)
local PointsCFrame = CFramePointRightSide((LastPlace + (CurrentPlace - LastPlace).unit * (Distance / 2)), CurrentPlace)
TransformModel(PointsModel, PointsModel:GetModelCFrame(), PointsCFrame, true)
--Debris:AddItem(PointsModel, 10)
LastPlace = CurrentPlace
end)
elseif not LastPlace then
LastPlace = CurrentPlace
end
wait(Rate)
end
end)