Чтобы сделать спавн в Roblox Studio, добавьте объект SpawnLocation в Workspace, поставьте его над безопасной поверхностью и включите Enabled. Для общего старта оставьте Neutral = true. Свойство Duration задаёт время защитного ForceField после появления. Для командной игры выключите Neutral и сопоставьте SpawnLocation.TeamColor с Player.TeamColor. Для точного чекпоинта назначайте игроку RespawnLocation.
Обычная деталь Part не становится точкой появления из-за имени или цвета. Roblox выбирает только включённые объекты SpawnLocation, подходящие текущему игроку. Если таких точек несколько, выбор может быть случайным. Поэтому надёжная настройка начинается с понимания допуска: включена ли точка, нейтральна ли она, соответствует ли команде и не переопределена ли личным RespawnLocation.
Ставим SpawnLocation на ровную площадку и оставляем свободное место над ней.
Настраиваем Neutral и TeamColor, чтобы определить, кто может здесь появиться.
Duration создаёт временный ForceField сразу после появления персонажа.
Добавляем SpawnLocation и выбираем базовые свойства
В Explorer выберите Workspace и добавьте SpawnLocation. Поставьте площадку над полом, оставив свободное место сверху. Для первой проверки используйте одну точку: при нескольких допустимых SpawnLocation игрок может появляться на любой из них.
- Добавьте
SpawnLocationпрямо в Workspace и назовите егоMainSpawn. - Поставьте
Anchored = true, чтобы площадка не падала и не уезжала после столкновения. - Оставьте
Enabled = trueиNeutral = trueдля общего старта всех игроков. - Установите
Duration = 5, чтобы после появления создать ForceField на пять секунд. - Нажмите Play, затем Reset Character и повторите проверку три раза.
| Свойство | Стартовое значение | Что меняет |
|---|---|---|
Enabled | true | Разрешает использовать эту точку для появления |
Neutral | true | Допускает игроков любой команды |
TeamColor | Пока не важен | Учитывается для ненейтрального командного спавна |
Duration | 5 | Задаёт срок жизни защитного ForceField в секундах |

Roblox сначала отбирает допустимые точки, а при нескольких вариантах может выбрать случайную.
Color нужен оформлению. Свойство TeamColor участвует в выборе командного спавна. Красная площадка не станет спавном красной команды, пока TeamColor не совпадёт с цветом самой команды.Создаём точку спавна через Luau
Код пригодится, когда площадка создаётся вместе с уровнем или её параметры нужно зафиксировать явно. Поместите обычный Script в ServerScriptService: сервер создаст один SpawnLocation с заданными именем, размером, позицией и защитой.
local existingSpawn = workspace:FindFirstChild("MainSpawn")
if not existingSpawn then
local spawnLocation = Instance.new("SpawnLocation")
spawnLocation.Name = "MainSpawn"
spawnLocation.Size = Vector3.new(10, 1, 10)
spawnLocation.Position = Vector3.new(0, 2, 0)
spawnLocation.Anchored = true
spawnLocation.Enabled = true
spawnLocation.Neutral = true
spawnLocation.Duration = 5
spawnLocation.AllowTeamChangeOnTouch = false
spawnLocation.Parent = workspace
end- В Workspace появился ровно один объект
MainSpawn, даже если Script выполнился повторно. - Персонаж появляется над площадкой, не падает сквозь неё и не застревает в соседней геометрии.
- Сразу после появления вокруг персонажа виден ForceField, который исчезает примерно через пять секунд.

Проверка существующего объекта не даёт создать дубликат, а явные свойства делают результат воспроизводимым.
Командные спавны и чекпоинты через RespawnLocation
Для командной игры создайте объекты в Teams, а у соответствующих SpawnLocation поставьте Neutral = false. Roblox сопоставляет Player.TeamColor и SpawnLocation.TeamColor. Для персонального чекпоинта назначьте игроку RespawnLocation с нужным SpawnLocation.
| Сценарий | Настройка | Результат |
|---|---|---|
| Общий старт | Neutral = true | Подходит игроку любой команды |
| База команды | Neutral = false и совпадающий TeamColor | Подходит только игрокам этой команды |
| Несколько допустимых точек | Одинаковые правила допуска | Roblox выбирает одну из них случайно |
| Личный чекпоинт | player.RespawnLocation = checkpoint | Следующее появление привязано к выбранной точке |
local Players = game:GetService("Players")
local checkpoint = workspace:WaitForChild("CheckpointSpawn")
local activated = {}
checkpoint.Touched:Connect(function(otherPart)
local character = otherPart:FindFirstAncestorOfClass("Model")
local player = character and Players:GetPlayerFromCharacter(character)
if not player or activated[player] then
return
end
activated[player] = true
player.RespawnLocation = checkpoint
print(player.Name .. " activated CheckpointSpawn")
task.delay(1, function()
activated[player] = nil
end)
end)
Players.PlayerRemoving:Connect(function(player)
activated[player] = nil
end)RespawnLocation принимает ссылку на SpawnLocation, а не на обычный Part. Оставьте checkpoint включённым. Если он должен работать для всех команд, используйте Neutral. Если только для одной команды, настройте совпадающий TeamColor.Как работает защита ForceField и почему спавн выбирается неверно
При Duration > 0 Roblox создаёт ForceField и удаляет его через указанное число секунд. Humanoid:TakeDamage() и взрывы учитывают защиту, но прямое присваивание Humanoid.Health = 0 может её обойти. Такой урон должен явно проверять ForceField.
ForceField после появления не создаётся. Поставьте несколько секунд и снова выполните Reset Character.
Такой код способен обойти ForceField. Используйте TakeDamage или отдельную проверку защиты.
Точка не подходит игроку, если его TeamColor не совпадает со SpawnLocation.TeamColor.
Игрок иногда появляется не там, потому что Roblox выбирает среди нескольких допустимых точек.

Duration создаёт окно защиты, но собственная система урона должна учитывать ForceField.
Если игрок появляется на другой площадке, сравните Enabled, Neutral, TeamColor и RespawnLocation у всех SpawnLocation. Если он появляется рядом, но застревает или сразу получает урон, выбор уже работает: теперь проверяйте свободное место, Duration и реализацию опасных объектов.
Тестируем спавн как систему, а не одним запуском Play
Один запуск не выявит случайный выбор. Сделайте несколько Reset Character, затем запустите локальный сервер с двумя игроками. Назначьте разные команды и проверьте их базы. После этого активируйте checkpoint и снова сбросьте персонажа.
- Нужные точки включены, а временно отключённые имеют
Enabled = false. - Нейтральные точки доступны всем, командные имеют
Neutral = falseи совпадающий TeamColor. - Над каждой площадкой есть свободное место для полного персонажа.
- Duration соответствует правилам игры, а опасные скрипты уважают ForceField.
- При нескольких допустимых точках случайный выбор является частью дизайна, а не сюрпризом.
- Checkpoint назначает именно SpawnLocation и продолжает работать после смерти игрока.
SpawnLocation.Duration отвечает за защиту после появления. Время ожидания до respawn задаётся отдельно через Players.RespawnTime. Не меняйте Duration, если хотите ускорить или замедлить само возрождение.Как сделать одну общую точку спавна?
Добавьте SpawnLocation в Workspace, включите Enabled и оставьте Neutral равным true.
Что делает свойство Duration?
Задаёт число секунд, в течение которых после появления у персонажа существует ForceField. При 0 защита не создаётся.
Почему игрок появляется на случайной точке?
Для него доступно несколько SpawnLocation. Roblox может выбрать любую допустимую точку.
Как сделать спавн только для одной команды?
Выключите Neutral и задайте SpawnLocation.TeamColor, совпадающий с Team.TeamColor игрока.
Как сохранить достигнутый чекпоинт?
При касании назначьте player.RespawnLocation ссылкой на нужный SpawnLocation. Для сохранения между игровыми сессиями дополнительно нужен DataStore.
Начните с хаба по первой игре в Roblox Studio и закрепите Luau в курсе Lua. Затем соедините стартовую площадку с уровнями из статьи про Obby и чекпоинты.
Чтобы защита после появления работала предсказуемо, сравните её с кодом из разбора KillBrick без двойного урона. В Кодике удобно по очереди проверить допуск к точке, respawn и только потом боевую механику.