Roblox 锚定零件实例不起作用

问题描述 投票:0回答:1

我在这里有一个很长的代码,用于在制造酸的工具内制作炸弹脚本,但酸不会锚定,酸锚定代码段位于第 41 行。它应该为炸弹的早期原型制造酸。

local tool = script.Parent
local char = tool.Parent.Parent.PlayerGui
local acid
tool.Activated:Connect(function()
    local part = Instance.new("Part")
    part.Parent = workspace
    part.Name = "Bomb"
    part.Shape = Enum.PartType.Ball
    part.Size = Vector3.new(2,2,2)
    part.Position = tool.Handle.Position
    part.BrickColor = BrickColor.new("Black")
    local flashcount = 0
    
    local function flash()
        local part = part
        part.BrickColor = BrickColor.new("Really red")
        wait(0.99)
        part.BrickColor = BrickColor.new("Black")
    end
    
    while wait(1) do
        flash()
        flashcount += 1
        if flashcount == 4 then
            local sound = Instance.new("Sound")
            sound.SoundId = "rbxassetid://6823153536"
            sound.RollOffMaxDistance = 100
            sound.Parent = part
            sound:Play()
            local explosion = Instance.new("Explosion")
            explosion.Parent = workspace
            explosion.Position = part.Position
            explosion.Hit:Connect(function(parti)
                parti.Anchored = false
            end)
            
            acid = Instance.new("Part")
            acid.Position = part.Position
            acid.Parent = workspace
            acid.Size = Vector3.new(1, 5, 5)
            acid.Anchored = true
            
            break
        end
    end
    wait(4)
    part:Destroy()
    wait(4)
end)

我也尝试将其与它隔离,但没有成功。我需要将其锚定为游戏中的炸弹工具。

debugging lua game-engine physics roblox
1个回答
0
投票

您的代码顺序似乎会影响您实际预期的结果。

创建要插入工作区的实例时,通常按照最后将实例作为工作区的父级,同时首先应用某些属性修改的顺序来完成。例如,爆炸的事件侦听器可能仅在爆炸发生后才注册,从而导致永远不会调用该事件。 为了避免这种情况,您可以移动线路

explosion.Parent = part
到事件监听器下面。

对于酸性部分也是如此,只有在设置了所有属性(包括将“锚定”设置为 true)后才需要创建父级。

可能发生的情况是,你的爆炸甚至在酸部分有机会锚定之前就将其吹走了。

考虑阅读以下文章,了解有关 Roblox 任务计划如何优先运行代码的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.