Почему мой мигающий лазер не может убить игрока в Roblox?

#lua #roblox

#lua #roblox

Вопрос:

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

 local Laser = script.Parent

local function onPartTouch(otherPart)
    local touchObject = otherPart.Parent
    local humanoid = touchObject:FindFirstChildWhichIsA("Humanoid")
    if (humanoid) then
        humanoid.Health = 0
    end
end

while true do
    Laser.Transparency = 1
    wait(1)
    Laser.Transparency = 0
    wait(1) 
end

Laser.Touched:Connect(onPartTouch)
 

В случае без мигания. это окно сработало. но как только вы добавите вышеупомянутый while блок, это поле будет испорчено. это поле не работает при прикосновении.

Почему?

Спасибо.

Комментарии:

1. Вероятно, вам также следует установить для вашего лазера значение CanCollide = false. В противном случае игроки могут по-прежнему попадать в лазер, даже когда он невидим.

2. Спасибо, что дали мне подсказку. Мне также нужно было установить для моего лазера значение Anchored = true. но даже когда отмена столкновения отключена, мой лазер все равно запускает событие касания. таким образом, ему нужно, чтобы затронутая часть проходила, когда ее отмена отключена. Этот официальный документ очень полезен для меня. developer.roblox.com/api-reference/property/BasePart/CanCollide

Ответ №1:

 while true do
    Laser.Transparency = 1
    wait(1)
    Laser.Transparency = 0
    wait(1) 
end
 

Это бесконечный цикл. Ваш скрипт выполняется, интерпретатор входит в этот цикл и больше никогда его не покидает. Итак, следующая строка

 Laser.Touched:Connect(onPartTouch)
 

никогда не будет выполнен.

Если вы хотите заставить что-то мигать, подумайте об использовании таймера.

Комментарии:

1. Они могли просто переместить лазер. Коснулся строки перед циклом while. Поскольку этот скрипт является дочерним для лазера, возможно, не имеет большого значения, что он зацикливается вечно

2. Вы, ребята, правы. Я должен был переместить Laser.Touched строку перед циклом while!!