Working on the hexagonal-tile terrain generation aspect of an upcoming project and I’ve came to an issue.
I’m trying to add river-looking structures in but it doesn’t seem to work. I’ve tested with perlin worms by making a path and then painting the hexes blue, but that still doesn’t work.|
Here’s the script:
local MapFolder = game.Workspace.Map
local Relief = 10
local TileExample = game.Workspace.tile
local event = game.ReplicatedStorage.Event
local topX = {0,0,0,0,0}
local topY = {0,0,0,0,0}
local yres = 25
local xres = 25
local val = 0
local function CusNoise(X,Y,seed,seed2)
return (math.noise(X+seed/100,Y+seed/100)+math.noise(X+seed/100+seed2,Y+seed2/100))/2
end
local function Display(seed,seed2)
local peaks = {0,0,0,0,0}
local peakspots: {BasePart} = {}
for X=1, xres do
for Y=1, yres do
local newtile = TileExample:Clone()
newtile.Anchored = true
newtile.Position = Vector3.new(X*4-((Y%2)*2),4,Y*3)
newtile.Parent = MapFolder
val+=1
if val>150 then
val = 0
task.wait(.2)
end
local noise = CusNoise(X,Y,seed,seed2)
for i=1,5 do
if noise > peaks[i] then
if i < 5 then
peaks[i-1]=peaks[i]
peaks[i] = noise
peakspots[i]=newtile
else
peaks[i]=noise
peakspots[i]=newtile
topY[i] = Y
topX[i] = X
break
end
end
end
newtile.Size = Vector3.new(4,2+((noise+.5)*4),4)
end
end
peakspots[1].Color = Color3.fromRGB(255,255,0)
peakspots[2].Color = Color3.fromRGB(100,100,100)
peakspots[3].Color = Color3.fromRGB(150,75,0)
for i, v in peakspots do
task.wait(1)
local rparams = RaycastParams.new()
local getpart = v
rparams.FilterType = Enum.RaycastFilterType.Blacklist
rparams.FilterDescendantsInstances = {v}
while getpart do
local noise = CusNoise(topX[i],topY[i],seed,seed2)
local rot = ((noise+.5)*360)-180
local ray = workspace:Raycast(getpart.Position-Vector3.new(0,getpart.Size.Y-.2,0),Vector3.new(0,rot,0),rparams)
if not ray then getpart = nil else
getpart = ray.Instance
getpart.Color = Color3.fromRGB(0,0,255)end
end
end
end
event.Event:Connect(function()
MapFolder:ClearAllChildren()
task.wait(.3)
Display(math.random(1,200),math.random(1,200))
end)