2016-04-20 1 views
0

Я пытаюсь создать игру, где вы находитесь на площади, и когда вы идете в стороны, детали приходят и блокируют вас.Изменить положение по оси Y в зависимости от расстояния

Я получил далеко до точки, где она работает отлично, за исключением нескольких проблем, за исключением:

части идут ниже площади, когда он не поднял, я хочу, чтобы они были видны, когда они не подняли

детали спускаются, когда вы прыгаете, что позволяет легко убежать.

части идут слишком рано

Это код, который имеет дело с позиционированием стены.

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

ответ

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