VR Dual - Grip System


I can’t find any helpful posts or documentation further than VR basics about this. Basically, what I want to achieve is to be able to weld both of the player’s arms to an object and move said object in relation to both arms’ positions, similar to most VR FPS games.

Video below:

I have tried using ball/socket constraints and a couple of other useless techniques that I know.

My current grip system works as follows:

  • Check for grip input
  • Create a WeldConstraint inside object
  • Set Part0 to Hand and Part1 to object
    WeldConstraints proceed to only weld the object to the most recent Hand input, un-welding the other if it is attached.
1 Like


I found this technique that sort of works. It uses AlignPosition and AlignOrientation to move the parts to both hands in somewhat relation, but I cannot replicate it from client to server and vice-versa. Does anyone know how I can implement this properly or know a better way to go about this problem?

When updating the hand cframes, translate the CFrames using an offset CFrameValue which you can change with scripts.

1 Like

Hey, so sorry for the late response (testing season), but do you think you could elaborate on that a bit more? I think I understand what you are trying to convey, but I’m not sure what you mean by it.

I was able to implement my align position idea, but it was horribly jittery and unusable, so I would like to script this using CFrames as you mentioned above. Thank you!

For server replication, I used one function that has a mode parameter, and mode “make” will make a hand on the server, and mode “cf” will update the hands CFrame. After the server is fired, it also fires the same event back to the original client, and when that client receives the signal, the server side hands are made invisible to that client, as they already have hands that are faster on their end.