How can I make a spider web sling? (With pendulum arc)

I want to make a spiderman web slinging system, but not the basic ones. I want one with a pendulum arc for example. I have tried making many systems with it & researching about it, but I couldn’t find a solution. Here’s an example of what I’m trying to achieve. https://www.youtube.com/watch?v=ckTbFHgChe8
I don’t know if I should use body velocities, linear velocity, vector force, Idk.

You can try testing this kind of sling by connecting a part to a rope constraint to the ceiling, top, or something above then calling:ApplyImpulse() method, LinearVelocity, or VectorForce to add push or force

Let physics handle the math and it will simulate a pendulum arc for you

To influence the direction its going you can use vectorforce and control its force direction

1 Like

Ok thanks, I’ll definitely try this right now. Should I update you if it works or are you busy?

maybe yes remind me if it works

I mean… it works but like It feels to impulsive and explsoive `local uis = game:GetService(“UserInputService”)

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local mouse = player:GetMouse()
local camera = workspace.CurrentCamera

local swingPower = 700

local function Swing(pos)
local direction = pos - character.HumanoidRootPart.Position

local a1 = Instance.new("Attachment")
a1.Parent = workspace.Terrain
a1.WorldPosition = pos

local ropeConstraint = Instance.new("RopeConstraint")
ropeConstraint.Attachment0 = character.HumanoidRootPart.RootAttachment
ropeConstraint.Attachment1 = a1
ropeConstraint.Thickness = 0.1
ropeConstraint.Color = BrickColor.new("Institutional white")
ropeConstraint.Visible = true
ropeConstraint.Length = direction.Magnitude / 1.25
ropeConstraint.Restitution = 0.3
ropeConstraint.Parent = character.HumanoidRootPart

local vectorForce = Instance.new("VectorForce")
vectorForce.Attachment0 = character.HumanoidRootPart.RootAttachment
vectorForce.ApplyAtCenterOfMass = true
vectorForce.Force = Vector3.new(0, 250, -8000)
vectorForce.Parent = character.HumanoidRootPart

end

uis.InputBegan:Connect(function(input, processed)
if processed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {character}

	local ray = camera:ScreenPointToRay(mouse.X, mouse.Y)
	local result = workspace:Raycast(ray.Origin, ray.Direction.Unit * 10000, params)

	if result then
		Swing(result.Position)
	end
end

end)

uis.InputEnded:Connect(function(input, processed)
if processed then return end

if input.UserInputType == Enum.UserInputType.MouseButton1 then
	
end

end)`

1 Like