local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local COOLDOWN_TIME = 2 -- 파트 생성 간 대기 시간 (초)
local MAX_PARTS = 10 -- 최대 생성 가능한 파트 수
local HEIGHT_INCREASE = 2 -- 각 파트마다 올라가는 높이
local function createPart(position)
local part = Instance.new("Part")
part.Size = Vector3.new(4, 1, 4)
part.Position = position
part.Anchored = true
part.Parent = Workspace
return part
end
local function getRandomOffset()
local angle = math.random() * 2 * math.pi
return Vector3.new(math.cos(angle) * 10, HEIGHT_INCREASE, math.sin(angle) * 10)
end
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")
local lastPart = nil
local partCount = 0
local lastPartCreationTime = 0
local function createNewPart()
if os.time() - lastPartCreationTime < COOLDOWN_TIME then
return -- 쿨다운 시간이 지나지 않았으면 생성하지 않음
end
if partCount >= MAX_PARTS then
if lastPart and lastPart.Parent then
lastPart:Destroy() -- 최대 개수 도달 시 가장 오래된 파트 제거
partCount = partCount - 1
end
end
local newPosition = lastPart and (lastPart.Position + getRandomOffset()) or (rootPart.Position - Vector3.new(0, 3, 0))
lastPart = createPart(newPosition)
partCount = partCount + 1
lastPartCreationTime = os.time()
lastPart.Touched:Connect(function(hit)
if hit.Parent == character then
createNewPart()
end
end)
end
humanoid.StateChanged:Connect(function(_, newState)
if newState == Enum.HumanoidStateType.Jumping then
wait(0.5) -- 점프 후 잠시 대기
createNewPart()
end
end)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(onCharacterAdded)
end)
for _, player in Players:GetPlayers() do
if player.Character then
onCharacterAdded(player.Character)
end
end