Roblox Benutzerdefinierte Bewegung: Wall Running, Kanten-Greifen & VectorForce

2026-09-29 • DopaBrain Roblox Physik-Entwicklungsteam • DopaBrain Engineering

Featured DopaBrain Interactive Tools

Wall Running, Rutschen und Kantenklettern machen moderne Actionspiele dynamisch. Versucht man, diese Mechaniken nur mit Standard-Humanoid-Zuständen zu bauen, kommt es häufig zu Rucklern und Stürzen.

Durch die Kombination moderner Luau-Physik-Constraints (`LinearVelocity`, `VectorForce`) mit gerichteten Raycasts lässt sich ein flüssiges AAA-Bewegungsgefühl auf allen Plattformen erzielen.

1. Humanoid-Zustände für flüssiges Parkour anpassen

Grundlagen benutzerdefinierter Zustandsautomaten:

2. Gerichtete Raycasts und Ausrichtung an der Wandnormale

Wanderkennung und Berechnung der Vorwärtsrichtung:

3. Moderne Physik-Constraints: LinearVelocity & VectorForce

Ersatz veralteter BodyMovers durch moderne Constraints:

ReplicatedStorage.Controllers.WallRunController
-- Clientseitiger Wall Running Physik-Controller
local RunService = game:GetService("RunService")
local WallRun = {}
WallRun.__index = WallRun

function WallRun.new(character)
    local self = setmetatable({}, WallRun)
    self.Char = character
    self.RootPart = character:WaitForChild("HumanoidRootPart")
    self.Humanoid = character:WaitForChild("Humanoid")
    
    local att = Instance.new("Attachment", self.RootPart)
    local lv = Instance.new("LinearVelocity")
    lv.Attachment0 = att
    lv.MaxForce = 15000
    lv.RelativeTo = Enum.ActuatorRelativeTo.World
    lv.Enabled = false
    lv.Parent = self.RootPart
    
    self.Attachment = att
    self.LinearVelocity = lv
    self.IsRunning = false
    return self
end

function WallRun:CheckWall(side)
    local rightVec = self.RootPart.CFrame.RightVector
    local rayDir = (side == "Left" and -rightVec or rightVec) * 3.5
    local params = RaycastParams.new()
    params.FilterDescendantsInstances = {self.Char}
    params.FilterType = Enum.RaycastFilterType.Exclude
    return workspace:Raycast(self.RootPart.Position, rayDir, params)
end

function WallRun:Start(hitNormal, forwardDir)
    self.IsRunning = true
    self.LinearVelocity.VectorVelocity = forwardDir * 32 + Vector3.new(0, 4, 0)
    self.LinearVelocity.Enabled = true
    self.Humanoid:ChangeState(Enum.HumanoidStateType.Physics)
end

function WallRun:Stop()
    self.IsRunning = false
    self.LinearVelocity.Enabled = false
    self.Humanoid:ChangeState(Enum.HumanoidStateType.Freefall)
end

return WallRun

4. Kanten-Erkennung und Hochziehen (Mantle)

Kanten greifen und flüssig über Hindernisse klettern:

5. Touch-Steuerung und serverseitige Validierung

Mobile Bedienbarkeit und Schutz vor Geschwindigkeits-Cheats:

Frequently Asked Questions

Warum sollte man LinearVelocity statt BodyVelocity verwenden?

BodyVelocity ist veraltet. LinearVelocity gehört zur modernen Physik-Engine von Roblox, arbeitet stabiler und berücksichtigt Massen präzise.

Wie verhindert man das Abrutschen von der Wand beim Wall Run?

Durch eine vertikale Kraft (VectorForce), die genau der Schwerkraft entgegenwirkt und nach kurzer Zeit graduell abklingt.

Wie berechnet man die Laufrichtung an der Wand?

Über das Kreuzprodukt aus Wandnormale und dem Aufwärtsvektor (0, 1, 0) der Spielwelt.

Wie werden Parkour-Cheats serverseitig verhindert?

Durch Überprüfung von Wand-Raycasts und strikte Geschwindigkeitskontrollen auf dem Server.

Explore More Interactive Tests & Guides

Discover personalized cognitive assessments, stress evaluations, and game psychology tools on DopaBrain.

Go to Portal Hub