-- Настройки цветов (пастельная палитра)
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 скала с травой успешно сгенерирована!")