Загрузка данных


-- Настройки цветов (пастельная палитра)
local rockColor = Color3.fromRGB(124, 161, 181) -- Серо-голубой камень
local grassColor = Color3.fromRGB(152, 255, 216) -- Мятная трава
local material = Enum.Material.SmoothPlastic -- Гладко и мультяшно

-- Создаем модель для скалы
local rockModel = Instance.new("Model", workspace)
rockModel.Name = "Generated_LowPoly_Rock"

-- Функция для создания детали скалы
local function createRockPart(partType, size, position, rotation, color, name)
    local part = Instance.new("Part")
    part.Shape = partType or Enum.PartType.Block
    part.Size = size
    part.CFrame = CFrame.new(position) * CFrame.Angles(math.rad(rotation.X), math.rad(rotation.Y), math.rad(rotation.Z))
    part.Color = color
    part.Material = material
    part.Anchored = true
    part.CanCollide = true -- Игроки могут по ней прыгать
    part.Name = name or "RockPart"
    part.Parent = rockModel
    return part
end

-- 1. ЦЕНТРАЛЬНОЕ ЯДРО (Основа скалы)
createRockPart(Enum.PartType.Block, Vector3.new(15, 25, 15), Vector3.new(0, 10, -50), Vector3.new(0, 0, 0), rockColor, "Core")

-- 2. «ОСКОЛКИ» (Детализация для рубленого вида)
local shards = {
    -- Позиция (относительно ядра), Размер, Вращение
    {Vector3.new(6, 5, 5), Vector3.new(8, 15, 8), Vector3.new(15, 20, 10)},   -- Справа спереди
    {Vector3.new(-6, 3, -4), Vector3.new(9, 12, 10), Vector3.new(-10, -15, -5)}, -- Слева сзади
    {Vector3.new(0, 2, 7), Vector3.new(12, 10, 6), Vector3.new(25, 0, 0)},     -- Спереди внизу
    {Vector3.new(-5, 15, 2), Vector3.new(6, 8, 6), Vector3.new(0, 45, 15)},     -- Слева вверху
    {Vector3.new(5, 18, -3), Vector3.new(7, 6, 7), Vector3.new(-20, -30, 0)},   -- Справа на макушке
}

-- Базовая позиция ядра (для расчета позиций осколков)
local basePos = Vector3.new(0, 10, -50)

for i, shard in ipairs(shards) do
    createRockPart(
        Enum.PartType.Block, 
        shard[2], 
        basePos + shard[1], 
        shard[3], 
        rockColor, 
        "Shard_" .. i
    )
end

-- Добавим пару клиньев для острых углов
createRockPart(Enum.PartType.Wedge, Vector3.new(8, 10, 8), basePos + Vector3.new(7, 0, -6), Vector3.new(0, 180, 0), rockColor, "Wedge_1")
createRockPart(Enum.PartType.Wedge, Vector3.new(6, 12, 6), basePos + Vector3.new(-7, 5, 5), Vector3.new(0, 0, 0), rockColor, "Wedge_2")


-- 3. ТРАВЯНАЯ «ШАПКА» (Верхушка)
-- Делаем её из сплюснутых блоков, чтобы создать неровный рельеф травы
local grassPatches = {
    {Vector3.new(0, 22, -1), Vector3.new(12, 4, 12), Vector3.new(5, 10, 0)},   -- Центр
    {Vector3.new(5, 21, 3), Vector3.new(8, 3, 8), Vector3.new(0, -15, 10)},   -- Справа
    {Vector3.new(-4, 21, -4), Vector3.new(9, 3, 9), Vector3.new(-10, 20, -5)}, -- Слева
}

for i, patch in ipairs(grassPatches) do
    createRockPart(
        Enum.PartType.Block, 
        patch[2], 
        basePos + patch[1], 
        patch[3], 
        grassColor, 
        "GrassPatch_" .. i
    )
end

-- Выделяем готовую скалу в редакторе
game.Selection:Set({rockModel})
print("Low-Poly скала с травой успешно сгенерирована!")