Савелий Мухин
Ученик
(99),
на голосовании
5 дней назад
У меня проблема в роблокс студио, я хотел бы создать игру с бесконечной генерацией. Сама генерация у меня уже есть, но я не могу сделать так чтобы последняя комната всегда была определённой. Вот скрипт на генерацию комнат: local RoomsLimit = 100
function GenerateRoom(ConnectPoint) if #workspace.Rooms:GetChildren() < RoomsLimit and ConnectPoint then local PointCFrame = ConnectPoint.CFrame ConnectPoint:Destroy()
local NewRoom = game.ReplicatedStorage.RoomsAssets:GetChildren()[math.random(1, #game.ReplicatedStorage.RoomsAssets:GetChildren())]:Clone() NewRoom.Parent = workspace.Rooms
local TouchConnection = NewRoom.Hitbox.Touched:Connect(function()end)
local SelectedPointIndex = math.random(1, #NewRoom.Connections:GetChildren()) local SelectedPoint = NewRoom.Connections:GetChildren()[SelectedPointIndex] local SelectedPoints = NewRoom.Connections:GetChildren()
Вот скрипт на генерацию комнат:
local RoomsLimit = 100
function GenerateRoom(ConnectPoint)
if #workspace.Rooms:GetChildren() < RoomsLimit and ConnectPoint then
local PointCFrame = ConnectPoint.CFrame
ConnectPoint:Destroy()
local NewRoom = game.ReplicatedStorage.RoomsAssets:GetChildren()[math.random(1, #game.ReplicatedStorage.RoomsAssets:GetChildren())]:Clone()
NewRoom.Parent = workspace.Rooms
local TouchConnection = NewRoom.Hitbox.Touched:Connect(function()end)
local SelectedPointIndex = math.random(1, #NewRoom.Connections:GetChildren())
local SelectedPoint = NewRoom.Connections:GetChildren()[SelectedPointIndex]
local SelectedPoints = NewRoom.Connections:GetChildren()
table.remove(SelectedPoints, SelectedPointIndex)
NewRoom.PrimaryPart = SelectedPoint
NewRoom:PivotTo(PointCFrame * CFrame.new (0, 0, -1) * CFrame.Angles(0, math.rad(180), 0))
NewRoom.PrimaryPart:Destroy()
for _, Part in pairs(NewRoom.Hitbox:GetTouchingParts()) do
if not Part:IsDescendantOf(NewRoom) then
NewRoom:Destroy()
NewRoom = nil
local NewDeadEnd = script.DeadEnd:Clone()
NewDeadEnd.CFrame = PointCFrame
break
end
end
TouchConnection:Disconnect()
task.spawn(function()
for _, Point in pairs(SelectedPoints) do
GenerateRoom(Point)
end
end)
end
end
GenerateRoom(workspace.StartPoint)