Proximity Prompt Studio Beta

It shows a keyboard key on the prompt:

image

How will we change the image for mobile?

I’m guessing that something like this (left for PC, right for mobile)

Does it automatically sense what device you’re on and show the correct one?

1 Like

Yea that’s what’s happening to me too. Just so happens it also occurs in third person too but only when you hold right click and turn your camera to the prompt the same problem happens when you cant move your mouse properly anymore.

robloxapp-20201030-0304192.wmv (3.4 MB)
sorry for the bad quality recorded it in roblox studio where the gameplay screen would be smaller lol

This is one of the big features I’ve been waiting for. A game I’m working on is very interaction heavy and the type of game (which a lot of other people are vested in as well) have also been looking into proximity inputs but have trouble doing so. Native support will make this so much easier to facilitate.

I can also finally get rid of the implementation in my game that uses 3 scripts and OOP, which has on numerous occasions given me a bit of a headache. I’m expecting, if the beta goes well, to do rapid changing to this built-in method. It’s much more expansive, customisable and full of features than what I have now. I’m especially grateful for the amount of event-driven opportunities this presents.

Still doesn’t hold a candle to the DataStore updates we were promised at RDC which will make me explode with joy, but it’s still a great step. Proximity inputs are much loved in a lot of types of games but sometimes are troublesome to get down.

I’ll be waiting for news on how the beta goes and if anyone encounters any exploiter issues before I make the move. It’s seriously critical in confronting my technical debt.

8 Likes

@crypto_mancer i got an infinite yeld on this, i inserted a ProximityPrompt inside my model, this code is supposed to make a humanoid run an animation when the interaction gets triggered:

local hum = script.Parent:WaitForChild("Humanoid")

local anim = hum:LoadAnimation(script:FindFirstChildOfClass("Animation"))

workspace.Steamder.ProximityPrompt.Triggered:Connect(function(player)

anim.Looped = false

anim:Play()

end) 

Any way to solve this?

Thank you

1 Like

Thanks for checking out the beta, and thanks for catching this issue! We’ll address this.

1 Like

Here’s a fun hack:

You can probably fashion a jank region system out of this kinda like this suggestion

You could do custom streaming or custom ambience based on the closest part and just not use Triggered for anything.

-- localscript
local Lighting = game:GetService("Lighting")
local ProximityPromptService = game:GetService("ProximityPromptService")

ProximityPromptService.PromptShown:Connect(function(instance)
    local parent = instance.Parent
    
    Lighting.Ambient = parent.Color
    Lighting.OutdoorAmbient = parent.Color
end)

proximityRegionHack.rbxl (25.7 KB)

53 Likes

Thanks for trying out the feature! I can’t be sure what is causing this issue. Is this script definitely a sibling of an object called “Humanoid”? Can you put prints in to determine which line it’s yielding forever on?

this’ll make things much easier

I don’t understand the old ways of proximity detection

1 Like

honestly never expected any updates like this to roblox that tend to be scripted by the developer,
I made a system similar to this that I’m using in multiple games and it looks like I’ll probably need to port over to this eventually as it seems identical in functionality but will obviously have better support

Oh, sorry i solved it, i tried writing and deleting things :sweat_smile:

This is the new code:

local hum = script.Parent.Parent:WaitForChild("Humanoid")

local anim = hum:LoadAnimation(script:FindFirstChildOfClass("Animation"))

workspace.Steamder.ProximityPrompt.Triggered:Connect(function()

anim.Looped = false --the animation still being looped

anim:Play()

end)

But now the animation is being looped, idk why, but it is supposed to happen? @crypto_mancer


Also, i found a small error, in the image, look closer at the wheel, its image its cutted
Dia

5 Likes

Found an Issue, feel free to test this yourself. If the brick with proximity prompt is in the lighting or starter player scripts, (pretty much anywhere that’s not the workspace BESIDES Server Storage) the Prompt still shows.

The Task Brick in Lighting has a Proximity Prompt in it.

3 Likes

This is actually very possible from using ProximityService like GollyGreg mentions above. Here’s a quick example of it that I got set up in a couple of minutes.

https://streamable.com/aygokn

For this example, I put a ProximityService instance in each collectible part, and set its Style property to Custom, so that no Gui pops up. I also set the MaxActivationDistance to 5.

-- LocalScript
local ProximityPromptService = game:GetService("ProximityPromptService")
ProximityPromptService.PromptShown:Connect(function(instance)
	local parent = instance.Parent

	if parent.Name == "Collectible" then
		parent:Destroy()
		print("Collected!")
	end
end)

As you mentioned, it’s slightly hacky as it listens for the changed state, but honestly it works pretty great :happy2:

5 Likes

Nice lol. This feels like how you’d have to make this work if we were making minecraft mods.

Though I agree with @BusyCityGuy, it’d be nice to have proper sphere casting.

5 Likes

Is there any chance we will be able to make similar prompts that are always on the screen, rather than only world space prompts?

For example, a screen space button prompt on the bottom right of the screen that you hold to return to the game’s hub.

4 Likes

This is very cool. Could we also mainstream radials? : )

1 Like

I think that the Proximity Prompt is great, however when trying to ride the car, there should be a wait sentence and a sort of animation rather then just getting teleported to the car. That would be nice, otherwise this new API Instance seems greater then expected! Nice job Roblox!

I haven’t personally tested out the feature; however, I do have one pressing question. Let’s say I have a car and I want to have multiple interactions at once, one to lock it and one to sit in it. Is there any way utilizing this system to get it to stack on top of each-other much like using a UIListLayout while also having different keys bound? If that’s not possible is it something on the roadmap of things to be added?

For me this has been a long awaited feature as an alternative to my current interaction system that would create less overhead. I look forward to testing this out in the morning!

Is there any easy way to force it to always use the camera’s focus, and if not, could you consider adding one? This feels like it would make a lot more sense than taking the character position (to prevent things behind you getting prompted, for example).

WOW! When will this be fully released? PLEASE be soon! Loving the amazing updates Roblox :heart_eyes:

2 Likes

You could probably program it when customizing the proximity prompt to make it fade in or out depending on the distance from the players character.