# Custom path interpolated generator (code in solution)

So what I am trying to code is a custom path generator algorithm.
What it does is it generates parts between 2 parts with the given amount of studs.
Here are some screenshots of my current progress:

this is my script:

Blockquote

``````local Studs = 5
local function RayCast()
local P1 = script.Parent.P1
local P2 = script.Parent.P2
local Target = script.Parent.PT

local Multiplier = 2
local Mag = (P1.Position - P2.Position).magnitude / (Studs*Multiplier)

local AmountOfPartsRequired = math.round(Mag)
print(AmountOfPartsRequired)
local ray = Ray.new(P1.Position, (P1.Position - P2.Position).unit * Mag)
local part, position = workspace:FindPartOnRay(ray)
local Parts = {}

--

repeat AmountOfPartsRequired = AmountOfPartsRequired-1
local Stud = Instance.new("Part")
Multiplier = Multiplier - Multiplier/2
print(Multiplier)
Mag = (P1.Position - P2.Position).magnitude / (Studs*Multiplier)
ray = Ray.new(P1.Position, (P1.Position - P2.Position).unit * Mag)
Stud.CFrame = CFrame.new(P1.Position, position) * CFrame.new(0,0,Mag)
table.insert(Parts, Stud)
until AmountOfPartsRequired<1

Target.CFrame = CFrame.new(P1.Position, position) * CFrame.new(0,0,Mag)
return Parts
end

game["Run Service"].Heartbeat:Connect(function()
local Ps = RayCast()
for i=1, #Ps do
Ps[i].Parent = game.Workspace.NodesHolder
end
wait()
Ps = game.Workspace.NodesHolder:GetChildren()
for i=1, #Ps do
Ps[i]:Destroy()
end
end)

``````

Blockquote

any help would be nice!

Nvm I figured it out myself.
here is how I made it:
In this script, I define the start and end positions using Vector3 values, and the distance between each stud using the `studDistance` variable. We then calculate the direction and distance between the start and end positions using Vector3 operations.

Next, I made a loop that generates a series of `Part` objects representing the studs along the path. I incremed the current position along the direction vector by `studDistance` in each loop iteration, create a new `Part` object at that position, and set its CFrame to the new position. Finally, I added a final stud at the end position.

script.

``````-- Define the start and end positions
local function GeneratePath()
local start = script.Parent.P1.Position
local finish = script.Parent.P2.Position

-- Define the distance between each stud in the path
local studDistance = 5

-- Calculate the direction and distance between the start and end positions
local direction = (finish - start).Unit
local distance = (finish - start).Magnitude

-- Create the path using studs
local currentPos = start
while (currentPos - finish).Magnitude > studDistance do
currentPos = currentPos + direction * studDistance
local stud = Instance.new("Part")
stud.Name = "PathStud"
stud.Size = Vector3.new(1.2, 1.2, 1.2)
stud.CFrame = CFrame.new(currentPos)
stud.Anchored = true
stud.Parent = game.Workspace.NodesHolder
end

-- Add a final stud at the end position
end

game["Run Service"].Heartbeat:Connect(function()
Ps = game.Workspace.NodesHolder:GetChildren()
for i=1, #Ps do
Ps[i]:Destroy()
end
GeneratePath()
end)
``````

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.