Welding but allowing character to move

I’m trying to weld a part to a player, as I’m creating a skill for my game. However, when the part is welded (with a WeldConstraint) to the player’s right hand, the part makes the character not able to move. I know this is the behavior of welds, but I’d like to know if there’s a way of preventing the two parts from “blocking” each others. If anybody can help I’d appreciate it.

Edit: Adding this gif to showcase the problem better:
https://gyazo.com/df4437cde023e835b1e1699f26d68b04

3 Likes

It’s not anchored tho. --------

can you show your code, please?


local Humanoid = Character.Humanoid;
local Animator = Humanoid:FindFirstChild("Animator") or Instance.new("Animator", Humanoid);
local RootPart = Character.HumanoidRootPart;	
local Head = Character.Head;	
local Torso Character:FindFirstChild("UpperTorso") or Character.Torso;
local Limb = Character:FindFirstChild("RightHand") or Character["Right Arm"];
local Track = Animator:LoadAnimation(script.Start);
	
Humanoid:SetAttribute("Block", false);
	
StuckBV.Parent = RootPart;
	
--| Checking if the rig is R15 or R6 + Playing track
if Humanoid.RigType == Enum.HumanoidRigType.R6 then
	R15 = false;
	Track = Animator:LoadAnimation(script.StartR6);
end;
Track:Play();
	
--| Blocking the player
Stuck.Parent = Character.Debounces;
Move.Parent = Character;
	
--| Creating the disk
local Disk = Assets.Disk:Clone();
Disk.Anchored = false;
Disk.CFrame = Limb.CFrame * CFrame.new(0, -Limb.Size.Y / 2 - 2, 0) * CFrame.Angles(math.rad(90), math.rad(90), 0);
Disk.Creator.Value = Character;
Disk.Parent = workspace.Effects;
	
--| Welding sphere to limb
local Weld = Instance.new("WeldConstraint");
Weld.Part0 = Disk;
Weld.Part1 = Limb;
Weld.Parent = Disk;
Weld.Enabled = true;

Is Part0 the Right Hand and Part1 the part?

The opposite actually. Should I try switching them?

Yes, If I’m correct, WeldConstraints weld Part1 to Part0

1 Like

Alright, let me try that real quick. Does parenting the weld to a part instead of the other change something too?

I doubt changing the parent does anything, but I’m unsure.

To answer that, no. Parenting the weld instance itself doesn’t change the properties of the weld. Weld constraint is harder to be broken than a manual weld, motor 6d, or any other types of welds.

1 Like

Nothing much changed. I linked a gif in the main post that shows what I mean. It looks like the disk is not allowing the player to move.

Is the CanCollide property off? It might be a contributing factor.

To be honest if I were you, I’m more likely going to use a Motor 6D OR a manual weld over a weld constraint, and I would parent the disk itself to the character for stability.

ADDITIONAL EDIT

Is the disk a model or just a basepart

1 Like

As well, does this

local Disk = Assets.Disk:Clone();

have any BodyPosition or anything else in it? In the video it appears to want to stay at the same Position, like being Anchored, but it also seems to be tilting slightly with the arm animation?

Have you tried making it Massless? That can affect welding Parts to a player as well.

But aren’t Motor6Ds meant to be used for rigs only? I’ll try with ManualWelds tho. Also it’s a BasePart (meshpart specifically).

A BodyVelocity is made inside of it after the item is thrown, but I don’t think that’s the problem as it’s made after the weld is destroyed.

Weld:Destroy();
local BodyVel = Instance.new("BodyVelocity");
BodyVel.MaxForce = Vector3.new(100000, 100000, 100000);
BodyVel.Velocity = (ClientPosition - Disk.Position).Unit * 125;
BodyVel.Parent = Disk;

Nevermind now it’s worse. I’ll keep using a WeldConstraint meanwhile.

How about the Massless Property? Have you tried that yet?

1 Like

Didn’t work, but it helped as the character didn’t glitch anymore. But anyways I tried what @Jas_nRuski and

apparently it was the solution. Didn’t think anything would’ve changed honestly, except stability as he said, but it did, so thanks for the help to you and everyone who answered this post.

1 Like

Amazing! Good to see my help being a solution.

For future reference, you really want to consider using a tool for anything that includes a part. In this case, if a disk is welded to a hand, you might just consider using a tool for it.

This eventually comes down to Network Ownership (example 3). When you welded the part to client, the server resumes having ownership of the part, therefore a player can’t control it. Typically you would call some complex functions to set the network ownership to client, but in this case, the easiest way out is just to literally parent it.

Well I use tools to control the moves, however, they have separate ModuleScripts that actually control the moves. I might consider switching if I encounter another big problem. And I didn’t know about that Network Ownership thing too, I only thought it wouldn’t work with welded parts BUT welded to an anchored part, which is not the case here. Thanks for the clarifications!

1 Like