2016-04-20 9 views
0

Ich habe versucht, ein Spiel zu machen, wo Sie in einem Quadrat sind und wenn Sie an die Seiten gehen, Teile kommen und blockieren Sie.Ändern Sie die Position auf der Y-Achse basierend auf der Entfernung

Ich habe weit zu dem Punkt, wo es gut funktioniert, bis auf ein paar Probleme:

die Teile unter dem Platz gehen, wenn nicht erhoben, ich möchte, dass sie sichtbar sein, wenn sie

nicht erhöht sind

die Teile gehen nach unten, wenn Sie springen, so dass es leicht zu entkommen.

die Teile nach oben zu früh

Dies ist der Code, der mit der Wand Positionierung befasst.

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 

Sie können mein Spiel hier sehen: https://www.roblox.com/games/400391033/Marble-walls

Antwort

0

Siehe Code kommentiert.

   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 
Verwandte Themen