Struggling to "attach" part to player while keeping rotation at 0,0,0/not rotating as player turns

In short, I’m trying to remake an old flash game called Stick Arena, and I’ve been trying to get the decorative spinners that display under players created early on since I thought it would be simple to do.
An example video to show what I’m talking about: Stick Arena: Dimensions Ep.15 - YouTube - I’m currently trying to make a decorative image that sits on the ground underneath the player (likely just a single part) and visually spins on its own (surfacegui with some images that rotate, and the part rotation is fixed to 0,0,0 so theres no interference from the players movement)

Currently the best I can do is weld a part to the players humanoidrootpart, however that rotates along with the players movements (which is annoying to counter).
I’ve tried using guides on making pets (the ones that float behind the player) and tweaking the bodygyro stuff it so it sits underneath the player instead, however no matter what I do they either end up looking glitchy (shaking violently) or lagging behind the players position.
I have also tried using scripts to set the parts position and rotation each time the player moves, however that’s annoyingly laggy and just downright unoptimised/bad practice.

My ideal result would be a part that sits flush on the floor underneath the player and stays with rotation at 0,0,0 so I can script a surfacegui to do any animations I like.

Would anyone happen to have suggestions on this matter?

Edit: It’s probably bad practice but I ended up just doing positioning both server sided and client sided.

3 Likes

Hey! I know it’s been a while, but I’ve recently been struggling with the exact same issue and situation. No worries though, I have a fix that worked for me, and hopefully it works for you too.

Use the BallSocketConstraint the same way you would use a weld, set the AlignOrientation to single attachment mode, and put the attachment in the same part the AlignOrientation is in (the part you don’t want to rotate).

This should result in an extremely smooth and precise way to achieve what you were trying to accomplish. Hope this helps!

4 Likes

This guys made a model that has three parts that spin around one center part. If you watch his videos he is able to rotate and move the center part without changing the orientation of the three spinning parts.
https://devforum.roblox.com/t/how-do-i-make-3-parts-rotate-around-a-center-without-changing-their-own-orientation-using-tweenservice/2877533/9?u=palamede
He has a script which you could replace the “center” variable with a part of your character and the three cubes will orbit around you.
I’m working on a similar thing and found him so i thought id share the link, I was trying to work with constraints and attachments and avoid using loops, couldn’t get it to work, but i figured even if i got them to work roblox behind the scenes code would be a loop every frame anyways.

1 Like

I’ve tested this myself and BallSocketConstraint does work. I attached it to a custom attachment inside the character and RootAttachment. OP please make this the solution for other people-

1 Like

After more testing it seems that the player jumps higher than normally idk the reason why…