Hello,
A little disclaimer:
I’m VERY new to physics to the point where I’m not even sure if this is related to physics at all.
I have recently built a sausage as a tool that uses BallSocketCostraints to make a jiggling effect,
But, Whenever I equip this item or move with it, my character makes weird movements, you can say it almost glitches.
Here's a video.
And here you can find the tool.
SausageTool.rbxm (6.0 KB)
I have no idea what it might cause it, all the parts of the sausage have “CanCollide” set to False,
And all the parts are welded together.
I have tried messing with the BallSocketCostraints a little bit but nothing helps.
I also have another problem but that isn’t as bad as the other one, in fact, I can solve it just by disabling the First-Person camera, but I’d rather not.
Here's a video.
Update:
I have also noticed that when you equip the sausage, then unequip it, go somewhere far away and equip it again, something weird happens. It’s like half of the sausage stays where you last left it and when you equip it somewhere else, it tries to get back together.
Video Here
I feel like I should just give up with BallSocketConstraints… They don’t seem to fit for tools, It’s just too glitchy.
Is there anything else I can use to have the same effect?
Thanks in advance.
4 Likes
Try making the mass of the object lower. I don’t know a lot about physics either, so this may not work.
I’m not quite sure I know what you mean,
I have tried making it smaller and massless, and it’s a bit better when I walk, but I would like the sausage to stay with that size,
It's also somewhat glitchier
2 Likes
Set the property Masless to true.
Or put it on it’s own collision group.
3 Likes
Hello, I’m not sure why it didn’t work before but setting it massless seems to fix 90% of the issue.
It still does make your character move slightly when you equip it and walk, so if you dance but equip the tool it will stop your dance, and it still detaches 2 parts when you move your visual in first-person, but overall it is a lot less laggy when you walk. But I’m still unsure why it’s not completely fixed, It should be like holding air since it has no mass and Can-Collide is set to false, it shouldn’t be considered a high weight and move your whole character because of it…
Example, I tried to change to sausage to a giant one.
Isn’t there a way to set the weight of the object to 0? It’s like you’re the one attached to the sausage, not the opposite.
It being Masless is setting the weight to 0.
Have you tried to make you sausage massless? You can also make a script to replace sausage parts in your hand when your sausage is equipped.
Yes, if you scroll you can see that I did mention putting it as massless.
But I’m afraid I must just give up with BallSocketCostraints, I tried almost everything now…
I’m not sure what you mean with that script part though, it seems interesting, could you explain it again?
Hitbox. I suggest you turn CanCollide for your hitbox to false, or reduce the size of your tool’s hitbox.
Hello,
Yes, every part has “CanCollide” set to false, I have already said this in previous comments.
Unfortunately I just can’t find a way around it.
It is massless and it shouldn’t collide.
Perhaps I should change the way how I get that “jelly” effect on the sausage? I do not know how though…
Edit: The “Hitboxes” parts are there purely because I need to register when a player hits another player with the sausage, There’s a script and an animation I didn’t put inside of the model I uploaded here because I already excluded them as the problem.
I have also tried deleting those parts but the problem is still persistent.
Oh wait, it might be because of the ball socket inside of the Handle. If you can, set the ballsocket’s CanCollide to off. If not, maybe you should try an alternative method of getting on the sausage by animating the tool, then just running the animation on loop while the player is moving.
This looks like a promising answer!
Thank you
I will try and let you know.
I’m not quite sure what you meant with “animating the tool” though : P
Helloo,
It appears that the ball socket is not physically inside of the handle and that ball sockets don’t have “CanCollide” as property.
But if you meant that the problem might be the handle being the parent of a part with a ballsocket (So not physically inside of the Handle) Then It gets a bit messy.
I have tried putting every part outside of the Handle, so the handle is not a parent to anything but a weld.
It seems to interact the same way as the old sausage.
I have also tried to set to false “RequiresHandle”, but it’s still a no-no.
Also, I’m not quite sure how to animate a tool like that, the only thing that comes up to my mind is making it one single mesh and using Bones + Mesh Deformation, but even there it would not be high fidelity animation, for example, if you jumped it would not go upside and down, it would just follow what the animation tells the item to do. (I’m also not every good at animating xD)
First of all, if you don’t have moon animator get it. You should also watch a tutorial on how to use it as it’s really useful, even outside of your current predicament.
Actually, you could use:
humanoid:GetPropertyChangedSignal("Jump"):Connect(function()
FireAnimationTrack:FireClient(game.Players:GetPlayerFromCharacter(humanoid.Parent))
end)
1 Like
Hello. Thanks again, I will try what you suggest.
I guess I have to reach compromises when it comes to developing on Roblox,
And I also need to accept the fact that I can’t always get things as I imagine them in my head, And that’s fine, I’m still learning and I think this has been a good lesson. Thank you for your time and for helping me. I will use this solution ^^
2 Likes
This happens because of robloxes “Assembly” system,
for some reason if a tool is split up into multiple assemblies (via all the constraints) it can sort of destabilize the player character when holding the tool.
I dont really know a way around this other than using only welds and motor6ds which significantly restricts the “natural” physics motion you can achive.
(i know this is an old post with a solution but i wanted to clarify since i didnt see anyone talking about assemblies before)
I figured out a way!
I wrote a little script that goes under the tool:
local RunService = game:GetService("RunService")
local TOOL = script.Parent
local handle = TOOL.Handle
local character = game.Players.LocalPlayer.Character
local hand = character.RightHand
RunService.Heartbeat:Connect(function ()
TOOL:PivotTo(hand.RightGripAttachment.WorldCFrame * TOOL.Grip)
end)
TOOL.Equipped:Connect(function ()
handle.Anchored = true
hand.RightGrip:Destroy()
task.wait(0.05)
for _, ch in TOOL:GetChildren() do
if ch:IsA("BasePart") then
ch.AssemblyLinearVelocity = Vector3.zero
ch.AssemblyAngularVelocity = Vector3.zero
end
end
end)
it un-welds the tools handle from the player character and then manualy positions it where it would be welded each heartbeat, that way the player and the handle isnt one assembly, that way the pyhysics simulation on the constraints works better and solves all the issues!
1 Like