Great ideas, I thought about tug of war at first but they’re all good ideas!
I had a question, if you set limits on the DragDetectors are the dragged positions checked server side?
DragDetector derives from ClickDetector so you can just use a DragDetector instead. It’s not a good idea to use both as siblings. Only one will get the events and you can’t be sure which.
But if you disable a DragDetector, it won’t respond to anything, so instead of toggling enabled, you can switch the DragStyle between Physical (which moves your unanchored part with physics) and Custom (which does nothing unless you register a script to do a custom response.
This script watches whether the cursor moves during a drag; if it doesn’t move, then it does your toggle of anchored and a toggle between Custom/Physical. If the cursor does move, and the style is Physical, then your door will rotate.
Here’s the new script:
local door = script.Parent.Parent
local dragD = door.DragDetector
local function changeDoorState()
door.Anchored = not door.Anchored
if (dragD.ResponseStyle == Enum.DragDetectorResponseStyle.Physical) then
dragD.ResponseStyle = Enum.DragDetectorResponseStyle.Custom
else
dragD.ResponseStyle = Enum.DragDetectorResponseStyle.Physical
end
end
local didMove = false
local function dragStart()
didMove = false
end
local function dragContinue()
didMove = true
end
local function dragEnd()
if (not didMove) then
changeDoorState()
end
didMove = false
end
dragD.DragStart:Connect(dragStart)
dragD.DragContinue:Connect(dragContinue)
dragD.DragEnd:Connect(dragEnd)
I had a question, if you set limits on the DragDetectors are the dragged positions checked server side?
Yes.
Thanks!
Understandable, next time I’ll remember!
This really is one of the coolest features that got put out in a while! Thanks alot for sharing this!
I think this is a great feature that will certainly be very useful for a lot of games
Here’s me testing it out in PC, Mobile, and VR
PC:
Mobile:
VR:
also lol you forgot to change this
It inherits from ClickDetector, so the documentation is the same
Wouldn’t that also mean that DragDetectors use the same old code as ClickDetectors or snippets of it?
This looks awesome @PrinceTybalt ! I’ve been waiting for an engine feature like this for a long time! This’ll save a lot of time from having to do custom physic interactions.
Is there a method we can use to initiate/force the DragStart event without player input? Will RestartDrag work for this? For example, I’d like to activate and deactivate a drag with custom functions, tools, etc. Something like :EngageDrag
and :DisengageDrag
?
Could we see studio play test using a external device soon?
Great addition to Studios, not gonna lie.
Thanks for the response and transparency!
Regarding the beginning of my previous statement, how much of an anti-cheat should we keep in our games now that Byfron has released? It’s alright if you don’t know much about it.
This is awesome! im definetly gonna use this. I can already see use cases like
- rotating items in a shop
- better puzzles, (just imagine a puzzle where you have to fix a painting on a wall)
- opening and closing doors
- throwable weapons
and a lot of other stuff.
Also as some people said here on the comment section i would love to see this also working for guis!, not only screenguis but for surface guis and billboard guis aswell
here are some usecases for screen and surface
-
movable window like interface
-
inventory organization (this is actually a pretty good one)
-
sliders
-
switches
im sure there’s a lot more.
now for billboard guis -
holographic draggable interface, think about tony stark’s table
-
literally everything citated before but hologram!
this would be an awesome addition, and im excited to see what’s next in store! thank you.
This is really cool! Was just playing around with it and it works pretty much flawlessly. Is there any plans for this to work with UI too?
there it goes, poor part
Your question has already been asked 3+ times in this thread. In future, remember to search any questions you have up to see if they’ve already been asked & answered before posting them
Wow, execution on this was flawless. Great feature!
Awesome!
Congratulations, @not_zylith you are the first Dev to report back on Touch or VR devices!
In a few places, it looks like you are working against the DragDetectors, like they are not going where you expect. My guess is that you are using TranslatePlane, but you’re trying to move the object in a different plane than it wants to use. We don’t have visual feedback (yet) so it may be hard to tell.
I suspect that you are using TranslatePlane, and your axis is either in X or Z, so your object moves in a vertical plane; but that plane is askance to your point of view.
You could try using TranslateViewPlane, or you could look at the ThrowIt example in “DragDetectors TestWorld 2” to see how you can drag parallel to whichever side you click on.
Also, if you change DragStyle to “BestForDevice” you can experiment with 6DOF movement in VR.
And thanks for the document tip. Since DragDetector derives from ClickDetector, the statement is technically correct. But I will check whether we prefer to substitute the derived class name in documentation situations like this.
Yes! Since DragDetectors inherit from ClickDetector (they are essentially Click-and-drag-detectors), by default they do everything the same. Starting from there, we can add things (like the new dragStart/dragContinue/dragEnd events), change things (like the fact that ClickDetectors lose focus if the cursor stops being over the geometry, but DragDetectors don’t), or keep things (like the fact that DragDetectors still have a MouseClick event, a maxActivationDistance, and a cursorIcon property)
There is not a way to initiate dragStart/dragContinue/dragEnd events without using your cursor.
It’s a rich and interesting topic that we will likely look into. Other users have suggested something like a ProximityPrompt to initiate dragging as well. I’m not clear yet on what the design for this would be like, and there are security issues: we’d need to be careful about so that people don’t just write scripts to move everything around at the wrong time. So it’s not something you can do yet. But it’s on our maybe roadmap.