Volumetric proximity prompts

Placing a proximity prompt within a BasePart instance will place the prompt at the center of the part, and the distance of the player from the prompt will be computed based on the distance of the player from the center of the part.

This means if you place a prompt inside a large part, the prompt will be unusable unless the player is really close to the exact center of the part. This can be annoying for things like tall objects such as big doors, or objects where you only care about the distance from the edge of the object (not the center).

I actually have trouble with this in many different games as a player as well, where it feels like the game is overly restrictive about my character’s distance from the object being interacted with, even though I am right next to the edge of it. Since there is no easy way for developers to improve this UX, they just ignore it, so a lot of games feel unnecessarily janky as a result.

To mitigate this problem, developers can increase the prompt’s interact distance a lot, but this doesn’t work if the part has a very high size ratio e.g. much taller than it is long or wide. The practical interact distance ends up being inaccurate.

Developers can also put the prompt inside an attachment placed at an arbitrary location relative to the parent part, but this can be annoying extra work (especially when prototyping, or when working in an established codebase), and doesn’t solve the “I only care about the distance from the edge” use case where one needs something a bit more dynamic.

To solve this issue, it would be really nice if we use prompts volumetrically when they are parented to a part, so that the interact distance is computed based on signed distance from the part’s shape. I imagine this could work something like: MaxActivationDistance=0 requires the player is inside the shape, MaxActivationDistance=X requires the player to be less than X studs away from the edge of the shape.

5 Likes