Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local conf = function(obj, ...)
- for _, property in ipairs({...}) do
- obj[property[1]] = property[2]
- end
- return obj
- end
- local grid = 100
- local size = 6
- local ticks = 0
- local minHill, maxHill = grid / 2, grid
- local terrain = Instance.new("Model", Workspace)
- local parts = {}
- for x = -0.5 * (grid * size), 0.5 * (grid * size), size do
- for z = -0.5 * (grid * size), 0.5 * (grid * size), size do
- ticks = ticks + 1
- if ticks % 200 == 0 then
- wait()
- end
- table.insert(parts, conf(
- Instance.new("Part", terrain),
- {"FormFactor", Enum.FormFactor.Custom},
- {"Position", Vector3.new(x, 0, z)},
- {"Size", Vector3.new(size, 10, size)},
- {"Anchored", true},
- {"TopSurface", Enum.SurfaceType.Smooth}
- ))
- end
- end
- for i = 1, grid do
- wait()
- local rand = parts[math.random(#parts)]
- local radius = math.random(minHill, maxHill)
- for _, part in ipairs(parts) do
- if (rand.Position - part.Position).magnitude < radius then
- part.Size = part.Size + Vector3.new(0, radius - (rand.Position - part.Position).magnitude, 0)
- end
- end
- end
- --normalize
- local high, low = 0, 2^16
- for _, part in ipairs(parts) do
- if part.Size.Y < low then
- low = part.Size.Y
- elseif part.Size.Y > high then
- high = part.Size.Y
- end
- end
- local ticks = 0
- for _, part in ipairs(parts) do
- ticks = ticks + 1
- if ticks % grid == 0 then
- wait()
- end
- part.Size = Vector3.new(size, (grid * 2) * (part.Size.Y - low) / (high - low), size)
- if part.Size.Y <= 0.3 then
- part.BrickColor = BrickColor.new("Bright blue")
- else
- part.BrickColor = BrickColor.new("Camo")
- part.Material = Enum.Material.Grass
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment