Событие Touched — один из самых простых и мощных способов взаимодействия в Roblox Studio. С его помощью можно создавать ловушки, бонусы, двери и многое другое. В этой статье — 10 полезных скриптов, которые срабатывают при касании объекта игроком.
📜 Как работает Touched
Когда любой объект (например, персонаж игрока) касается другого объекта (например, блока), у последнего срабатывает событие Touched.
part.Touched:Connect(function(hit)
print("Объект был коснутся:", hit.Name)
end)
print("Объект был коснутся:", hit.Name)
end)
Советы:
- Работает только у объектов с CanCollide = true и Anchored = true/false.
- hit — это объект, который коснулся.
✅ Скрипты на касание
1. 🔥 Урон при касании
script.Parent.Touched:Connect(function(hit)
local human = hit.Parent:FindFirstChild("Humanoid")
if human then
human:TakeDamage(20)
end
end)
local human = hit.Parent:FindFirstChild("Humanoid")
if human then
human:TakeDamage(20)
end
end)
Инструкция:
- Создай Part (например, лаву или шипы).
- Вставь в него Script и добавь код.
- Когда игрок коснётся блока, он получит урон.
2. 💥 Удаление объекта при касании
script.Parent.Touched:Connect(function(hit)
hit:Destroy()
end)
hit:Destroy()
end)
Инструкция:
- Создай Part (например, ловушку).
- Вставь в него Script и добавь код.
- Любой объект, коснувшийся этого блока, будет удалён.
3. 💨 Телепортация игрока
local destination = workspace:WaitForChild("TeleportPoint")
script.Parent.Touched:Connect(function(hit)
local character = hit.Parent
if character:FindFirstChild("HumanoidRootPart") then
character.HumanoidRootPart.CFrame = destination.CFrame
end
end)
script.Parent.Touched:Connect(function(hit)
local character = hit.Parent
if character:FindFirstChild("HumanoidRootPart") then
character.HumanoidRootPart.CFrame = destination.CFrame
end
end)
Инструкция:
- Создай Part (телепорт-портал).
- Вставь в него Script.
- В Workspace добавь ещё один Part и назови его TeleportPoint — это точка назначения.
4. 🪙 Добавление очков
Перед тем, как переписать этот скрипт, создай Value для посчета очков.
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.leaderstats.Points.Value += 1
end
end)
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.leaderstats.Points.Value += 1
end
end)
Инструкция:
- Создай Part (например, монетку или бонус).
- Вставь в него Script.
- В StarterPlayerScripts нужно добавить скрипт, который создаёт leaderstats с очками (IntValue Points).
5. 🧍 Замедление игрока
script.Parent.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = 5
end
end)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = 5
end
end)
Инструкция:
- Создай Part (например, липкую грязь).
- Вставь в него Script.
- При касании игрок будет двигаться медленно.
6. 🚪 Открытие двери
local door = workspace:WaitForChild("Door")
script.Parent.Touched:Connect(function(hit)
door.Transparency = 1
door.CanCollide = false
end)
script.Parent.Touched:Connect(function(hit)
door.Transparency = 1
door.CanCollide = false
end)
Инструкция:
- Создай Part (кнопку или плиту).
- Вставь в неё Script.
- В Workspace создай Part и назови его Door. При касании кнопки дверь исчезнет.
7. 🚩 Сохранение чекпоинта
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.RespawnLocation = script.Parent
end
end)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player.RespawnLocation = script.Parent
end
end)
Инструкция:
- Создай Part (чекпоинт, например, флаг).
- Вставь в него Script.
- При касании игрок будет возрождаться на этом месте.
8. 🎵 Воспроизведение звука
local sound = script.Parent:FindFirstChild("Sound")
script.Parent.Touched:Connect(function(hit)
if sound then
sound:Play()
end
end)
script.Parent.Touched:Connect(function(hit)
if sound then
sound:Play()
end
end)
Инструкция:
- Создай Part (например, музыкальную плиту).
- Вставь в него Sound и добавь звук.
- Вставь в этот же Part Script.
9. 🌀 Эффект вспышки
script.Parent.Touched:Connect(function(hit)
local flash = Instance.new("PointLight")
flash.Color = Color3.new(1, 1, 0)
flash.Brightness = 5
flash.Range = 10
flash.Parent = script.Parent
wait(0.5)
flash:Destroy()
end)
local flash = Instance.new("PointLight")
flash.Color = Color3.new(1, 1, 0)
flash.Brightness = 5
flash.Range = 10
flash.Parent = script.Parent
wait(0.5)
flash:Destroy()
end)
Инструкция:
- Создай Part (например, магический блок).
- Вставь в него Script.
- При касании создаётся вспышка света.
10. 🧊 Изменение цвета при касании
script.Parent.Touched:Connect(function()
script.Parent.BrickColor = BrickColor.Random()
end)
script.Parent.BrickColor = BrickColor.Random()
end)
Инструкция:
- Создай Part (например, плитку).
- Вставь в него Script.
- При касании цвет блока будет меняться.
📦 Полезные советы
- Всегда проверяй, кто именно касается объекта (например, персонаж или часть мира).
- Не забывай про дебаунс, если не хочешь, чтобы событие срабатывало слишком часто.
local debounce = false
script.Parent.Touched:Connect(function(hit)
if debounce then return end
debounce = true
print("Коснулся!")
wait(1)
debounce = false
end)
script.Parent.Touched:Connect(function(hit)
if debounce then return end
debounce = true
print("Коснулся!")
wait(1)
debounce = false
end)
🧠 Что дальше?
Эти простые скрипты отлично подходят для обучения, а также для прототипирования своих игр. Их можно использовать:
- в обучающих картах,
- в играх с ловушками,
- в системах прогресса и наград.
📍 Заключение
Событие Touched — отличный способ добавить интерактивности в игру без сложных интерфейсов. Попробуй каждый из этих скриптов и адаптируй под свою идею!
🔗 Полезные ссылки:
✉️ Хочешь научиться создавать игры в Роблокс?
Запишись на наши занятия по Роблокс Студио — научим с нуля создавать крутые проекты!
📲 roblo.ru