Разработка игрLua / Luau

Как настроить SpawnLocation в Roblox Studio: точка спавна и защита после появления

Настраиваем SpawnLocation в Roblox Studio: Neutral, Enabled, TeamColor и Duration. Создаём точку кодом, чекпоинт через RespawnLocation и проверяем ForceField.

Кодик

Автор

6 мин чтения

Чтобы сделать спавн в Roblox Studio, добавьте объект SpawnLocation в Workspace, поставьте его над безопасной поверхностью и включите Enabled. Для общего старта оставьте Neutral = true. Свойство Duration задаёт время защитного ForceField после появления. Для командной игры выключите Neutral и сопоставьте SpawnLocation.TeamColor с Player.TeamColor. Для точного чекпоинта назначайте игроку RespawnLocation.

Обычная деталь Part не становится точкой появления из-за имени или цвета. Roblox выбирает только включённые объекты SpawnLocation, подходящие текущему игроку. Если таких точек несколько, выбор может быть случайным. Поэтому надёжная настройка начинается с понимания допуска: включена ли точка, нейтральна ли она, соответствует ли команде и не переопределена ли личным RespawnLocation.

1Размещаем

Ставим SpawnLocation на ровную площадку и оставляем свободное место над ней.

2Ограничиваем

Настраиваем Neutral и TeamColor, чтобы определить, кто может здесь появиться.

3Защищаем

Duration создаёт временный ForceField сразу после появления персонажа.

Добавляем SpawnLocation и выбираем базовые свойства

В Explorer выберите Workspace и добавьте SpawnLocation. Поставьте площадку над полом, оставив свободное место сверху. Для первой проверки используйте одну точку: при нескольких допустимых SpawnLocation игрок может появляться на любой из них.

Безопасная стартовая точка за шесть шагов
  1. Добавьте SpawnLocation прямо в Workspace и назовите его MainSpawn.
  2. Поставьте Anchored = true, чтобы площадка не падала и не уезжала после столкновения.
  3. Оставьте Enabled = true и Neutral = true для общего старта всех игроков.
  4. Установите Duration = 5, чтобы после появления создать ForceField на пять секунд.
  5. Нажмите Play, затем Reset Character и повторите проверку три раза.
СвойствоСтартовое значениеЧто меняет
EnabledtrueРазрешает использовать эту точку для появления
NeutraltrueДопускает игроков любой команды
TeamColorПока не важенУчитывается для ненейтрального командного спавна
Duration5Задаёт срок жизни защитного ForceField в секундах

Схема выбора SpawnLocation по Enabled Neutral TeamColor и RespawnLocation
Roblox сначала отбирает допустимые точки, а при нескольких вариантах может выбрать случайную.

Цвет детали и TeamColor являются разными настройками. Визуальный 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, который исчезает примерно через пять секунд.

Создание нейтральной точки спавна MainSpawn через серверный Luau-скрипт
Проверка существующего объекта не даёт создать дубликат, а явные свойства делают результат воспроизводимым.

Командные спавны и чекпоинты через 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)
CheckpointSpawn должен быть именно SpawnLocation. RespawnLocation принимает ссылку на SpawnLocation, а не на обычный Part. Оставьте checkpoint включённым. Если он должен работать для всех команд, используйте Neutral. Если только для одной команды, настройте совпадающий TeamColor.

Как работает защита ForceField и почему спавн выбирается неверно

При Duration > 0 Roblox создаёт ForceField и удаляет его через указанное число секунд. Humanoid:TakeDamage() и взрывы учитывают защиту, но прямое присваивание Humanoid.Health = 0 может её обойти. Такой урон должен явно проверять ForceField.

Duration равен нулю

ForceField после появления не создаётся. Поставьте несколько секунд и снова выполните Reset Character.

Опасный блок меняет Health напрямую

Такой код способен обойти ForceField. Используйте TakeDamage или отдельную проверку защиты.

Neutral выключен без команды

Точка не подходит игроку, если его TeamColor не совпадает со SpawnLocation.TeamColor.

Есть скрытый второй SpawnLocation

Игрок иногда появляется не там, потому что Roblox выбирает среди нескольких допустимых точек.

Схема защиты ForceField после SpawnLocation и причин мгновенного урона
Duration создаёт окно защиты, но собственная система урона должна учитывать ForceField.

Проверяйте сначала право на точку, затем геометрию

Если игрок появляется на другой площадке, сравните Enabled, Neutral, TeamColor и RespawnLocation у всех SpawnLocation. Если он появляется рядом, но застревает или сразу получает урон, выбор уже работает: теперь проверяйте свободное место, Duration и реализацию опасных объектов.

Тестируем спавн как систему, а не одним запуском Play

Один запуск не выявит случайный выбор. Сделайте несколько Reset Character, затем запустите локальный сервер с двумя игроками. Назначьте разные команды и проверьте их базы. После этого активируйте checkpoint и снова сбросьте персонажа.

Финальный чек-лист SpawnLocation
  1. Нужные точки включены, а временно отключённые имеют Enabled = false.
  2. Нейтральные точки доступны всем, командные имеют Neutral = false и совпадающий TeamColor.
  3. Над каждой площадкой есть свободное место для полного персонажа.
  4. Duration соответствует правилам игры, а опасные скрипты уважают ForceField.
  5. При нескольких допустимых точках случайный выбор является частью дизайна, а не сюрпризом.
  6. 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 и только потом боевую механику.