co 如果玩家 startergui 中的值为真,我想在玩家触摸时打开一扇门

coI want to open a door on player touch if a Value in the players startergui is true

当玩家触摸门前或门后的方块时,我希望它检查玩家启动器 gui 中的值是否为真,如果为真,则打开门我可以在点击方块时执行此操作但是当我尝试时它触及的部分不是。 所以我尝试使用我将用于可点击砖块的东西并将其更改为触摸功能,但这没有用。 代码:

local db= false
local open = script.Parent.Open
local ind = script.Parent.Door1

script.Parent.Trigger.Touched:connect(function(player)
    if db == false then
        db = true
    if player:WaitForChild("PlayerGui").keyCard.Key.Value == true then
        if open.Value == false then
            script.Parent.Sound:Play()
            local f = script.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0)
            local f2 = script.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0)
            for i = 0,1,0.1 do
                local cfm = script.Parent.Door1.PrimaryPart.CFrame:lerp(f,i)
                local cfm2 = script.Parent.Door2.PrimaryPart.CFrame:lerp(f2,i)
                script.Parent.Door1:SetPrimaryPartCFrame(cfm)
                script.Parent.Door2:SetPrimaryPartCFrame(cfm2)
                wait()
            end
            open.Value = true
            wait(1) -- how long the door will stay open
            local f3 = script.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0)
            local f4 = script.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0)
            for i = 0,1,0.1 do
                local cfm = script.Parent.Door1.PrimaryPart.CFrame:lerp(f3,i)
                local cfm2 = script.Parent.Door2.PrimaryPart.CFrame:lerp(f4,i)
                script.Parent.Door1:SetPrimaryPartCFrame(cfm)
                script.Parent.Door2:SetPrimaryPartCFrame(cfm2)
                wait()
            end
            open.Value = false
        end
    else
        print("Negative")
    end
    db=false
    end

结束)

script.Parent.Trigger2.Touched:connect(function(player)
    if db == false then
    db = true
if player:WaitForChild("PlayerGui").keyCard.Key.Value == true then
        if open.Value == false then
            script.Parent.Sound:Play()
            local f = script.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0)
            local f2 = script.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0)
            for i = 0,1,0.1 do
                local cfm = script.Parent.Door1.PrimaryPart.CFrame:lerp(f,i)
                local cfm2 = script.Parent.Door2.PrimaryPart.CFrame:lerp(f2,i)
                script.Parent.Door1:SetPrimaryPartCFrame(cfm)
                script.Parent.Door2:SetPrimaryPartCFrame(cfm2)
                wait()
            end
            open.Value = true
            wait(1) -- how long the door will stay open
            local f3 = script.Parent.Door1.PrimaryPart.CFrame*CFrame.Angles(0,math.rad(90),0)
            local f4 = script.Parent.Door2.PrimaryPart.CFrame*CFrame.Angles(0,-math.rad(90),0)
            for i = 0,1,0.1 do
                local cfm = script.Parent.Door1.PrimaryPart.CFrame:lerp(f3,i)
                local cfm2 = script.Parent.Door2.PrimaryPart.CFrame:lerp(f4,i)
                script.Parent.Door1:SetPrimaryPartCFrame(cfm)
                script.Parent.Door2:SetPrimaryPartCFrame(cfm2)
                wait()
            end
            open.Value = false
        end
    else
        print("Negative")
    end
    db=false
end
end)

Touch 不会给你播放器。更确切地说是什么触及了方块,如果是玩家,则是玩家触及该部分的部分。

建议您确认是不是玩家触碰:

touchedPart.Parent:FindFirstChild("Humanoid")

然后你可以找到使用播放器服务的播放器:

玩家:GetPlayerFromCharacter(touchedPart.Parent)