VR button having poor collisions with hand

For about a week now, I have been trying to create a simple VR button. The user extends their hand, presses down, and the button moves down with it triggering something.

  1. What do you want to achieve? A button that is reliable and can be pressed at any time. I do not want my hand to phase through it.

  2. What is the issue? My hand phases through the button at times, while at other times they don’t. This is quite frustrating.

  3. What solutions have you tried so far? Originally, the button was a MeshPart. I tried setting the CollisionFidelity to Hull & PreciseConvexDecomposition. Neither solved the problem, so I tried using a simple cylinder instead. Still had the issue, so I tried using a part. I am now lost on what to try next, for I have run out of simpler objects.
    I also tried adding a print statement to see if anything collides at all, which they don’t.

Hand colliders use an AlignOrientation + AlignPosition connected to the rootpart. I did not see any issues while testing these out with other parts.
I am simply setting the CFrame of the hands.
I also have two arms aligned to the position of the colliders to give the player the appearance of their avatar.
I’m confused because the button works well at times, as shown in the clip. I cannot find the cause of my problem.
TLDR - Button works sometimes, doesn’t work at other times.

And for some extra information I missed; The button relies on a PrismaticConstraint with a VectorForce pointing up. This way, it’ll come up after being pushed down. A spring doesn’t work for this, as it bounces too often.
The button is clientsided. I had issues with a delay when it was serversided.
Metal part has no collision, grey part has no collision

Post is now properly categorized

3 Likes