Top.Mail.Ru
Ответы

Скрипт роблокс студио

мне нужно,чтобы каждая стена лабиринта (название у всех них одинаковое - Part) наносила урон при касании
помогите написать скрипт пожалуйста
я пытался через написать так,чтобы каждая стена так наносила урон,но наносит только та стена,в которую записан скрипт
вот если что тот код ччерез который пытался реализовать идею:
local Part= script.Parent
Part.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.Health -1
end
end)

По дате
По рейтингу
Аватар пользователя
Мудрец
8мес
1234567891011121314151617181920212223
 local Workspace = game:GetService("Workspace") 
 
-- Функция для обработки касания 
local function onTouched(hit) 
    local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid") 
    if humanoid then 
        humanoid.Health -= 1 
    end 
end 
 
-- Поиск всех существующих частей с именем "Part" 
for _, part in ipairs(Workspace:GetDescendants()) do 
    if part:IsA("BasePart") and part.Name == "Part" then 
        part.Touched:Connect(onTouched) 
    end 
end 
 
-- На случай, если новые части будут добавлены позже 
Workspace.DescendantAdded:Connect(function(descendant) 
    if descendant:IsA("BasePart") and descendant.Name == "Part" then 
        descendant.Touched:Connect(onTouched) 
    end 
end) 
Аватар пользователя
Гений
8мес

Ну тут либо каждую стену, которая наносит урон, оформлять в каждую скрипт, либо сделать одну стену кривой формы в виде одно объекта и в него впихнуть скрипт, либо откуда-то скрипт будет проверять координаты челдобрека и стен, и если этот хуманоид будет слишком близко к какой-то стене, то уменьшать его здоровьице.

Аватар пользователя
Профи
8мес

Для этого в workspace создайте скрипт. Внутри этого скрипта создайте ещё один скрипт, и назовите его Damage. В скрипт damage вставьте:

123456789
 script.Parent.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid ~= nil then
script.Parent.CanTouch = false
humanoid.Health -= 1
wait(0.1) --задержка между уроном
script.Parent.CanTouch = true
end
end) 

А в скрипт, в котором находится скрипт Damage вставьте:

12345678
 local path = путь до папки/модели, в которой хранятся стены лабиринта
local code = script:WaitForChild("Damage")
local part = path:FindFirstChild("Part")
while part ~= nil do
part = path:FindFirstChild("Part")
part.Name = "Part1"
code:Clone().Parent = part
end