根据距离在Y轴上更改位置

时间:2016-04-20 16:36:48

标签: lua roblox

我一直在尝试制作一个你在广场上的游戏,当你走到两边时,部件会出现阻挡你。

除了一些问题外,我已经远远达不到工作正常的程度:

当没有抬起时,部件位于正方形下方,我希望它们在未被抬起时可见

当你跳跃时,部件会下降,这样就很容易逃脱。

部件过早上涨

这是处理墙壁定位的代码。

for _, v in pairs(model:GetChildren()) do
    if string.sub(v.Name,1,4) == "Wall" then
        local walls = {}
        walls[v] = {v.CFrame,Vector3.new(1, 1, 1)}
        game:GetService("RunService").RenderStepped:connect(function()
            if(workspace[game.Players.LocalPlayer.Name]:FindFirstChild("HumanoidRootPart")) then
                local mag = (v.Position - workspace[game.Players.LocalPlayer.Name]:FindFirstChild("HumanoidRootPart").Position).magnitude
                sizeFactor = math.floor(mag)
                v.CFrame = walls[v][1]*CFrame.new(0,-sizeFactor+(walls[v][1].Y*1.8),0)

            end
        end)    
    end
end

您可以在此处查看我的游戏:https://www.roblox.com/games/400391033/Marble-walls

1 个答案:

答案 0 :(得分:0)

请参阅注释代码。

                for _, v in pairs(model:GetChildren()) do
                if string.sub(v.Name,1,4) == "Wall" then
                    local walls = {}
                    walls[v] = {v.CFrame,Vector3.new(1, 1, 1)}
                    game:GetService("RunService").RenderStepped:connect(function()
                        if(workspace[game.Players.LocalPlayer.Name]:FindFirstChild("HumanoidRootPart")) then
                            local mag = (v.Position - workspace[game.Players.LocalPlayer.Name]:FindFirstChild("HumanoidRootPart").Position).magnitude
                            if (mag <= 2) then --[[
                                    Currently your issue is that you never actually do ANYTHING regarding magnitude
                                    you essentially change the y-Axis as soon as the player spawns.. hence why it does it too early
                                    kappa
                                ]] 
                                sizeFactor = math.floor(mag)
                                v.CFrame = walls[v][1]*CFrame.new(0,-sizeFactor+(walls[v][1].Y*1.8),0)
                            end;
                        end
                    end)    
                end
            end