Today, we are extremely excited to introduce a brand new beta feature: a new dragger! This dragger is meant to be familiar to Studio users but also make building a lot more effortless and efficient. Oh, and the icing on the cake? It’s all based on a reusable Lua framework available to all of you to make your own.
You can turn on this beta feature by going to File -> Beta Features.
We had two goals in mind as we embarked on the epic adventure to create the new draggers in Studio. Your feedback will help us gauge how close we came to achieving our goals and all the things we need to do to get us closer.
The new Move, Scale, and Rotate tools must be built on top of a framework that can be leveraged by our developer community. Developers can create their own new draggers and manipulators, or copy the core draggers and make minor adjustments to their behavior so that they work better for some particular task on one of their projects. Note: Expect this framework to be in flux during the early stages of the beta.
The design of the new Move, Scale, and Rotate tools are informed by the following principles:
- Minimalism: Tools enhance user productivity and stay out of the way. They use the minimum UI needed to clearly communicate their functions and facilitate user interaction.
- Familiarity: Tools incorporate common design idioms that developers would expect, such as RGB axis colors, arrows for move, rings for rotate, and so on.
Of course, building on Roblox has come a long way since the original draggers were conceived way back when, so we did make a few changes to the dragger to make building with native tools more efficient. The primary improvements to the dragger are in the behavior of the freeform dragging invoked when you click on a part and drag-drop it to a new location in the Workspace with any of the core manipulators (or any manipulators you build using the reusable framework in the future!)
One of the issues with the old dragging behavior was unpredictability. It was sometimes hard to know where the dragged parts would end up when you dragged them in a particular way and, conversely, often difficult to know how you should drag them to get them into the desired position. The new freeform dragging behavior is to take the bounding box of the dragged objects, and place it onto the surface which the mouse is hovering over. Furthermore, the surface the mouse is hovering over is the only thing the new dragger takes into account: The dragged objects are free to intersect with other objects in the Workspace. This lets you place the dragged objects at the desired location regardless of what else happens to be around them, without needing to worry about some other object being slightly in the way and bumping the dragged parts out of the desired position.
Naturally, the above point means that models and selections of multiple parts now snap and align to the hovered surface the same way a single part does while being dragged. See the grass model being aligned to the slope above.
Surface Direction Agnostic Operation.
Have you ever tried to position objects on walls or ceilings of a model you’re making? You may have found that that doesn’t work very well with the old draggers. This problem is solved with the new draggers, they work exactly the same regardless of what direction the surface you’re trying to work on is pointing.
Predictable Tilt / Rotate.
Using the tilt / rotate keys (T / R) while dragging now has predictable behavior as well.
Rotate will always rotate around the surface onto which you’re dragging the part:
Tilt will always tilt the part around the horizontal axis towards the camera:
Models and selections of multiple parts are also tilted and rotated around the point you picked them up by, rather than around their centers.
Improved Snapping Control.
The new dragger gives you more control over what features snap to what other features when grid snapping is turned on, allowing you to work with objects without grid-snapped sizes much more easily. The behavior is to take the vertex on the selection closest to where you clicked, and snap that vertex to the closest vertex of the part you’re dragging onto. The result of this is that you can pick up an object by the feature you want to snap, and drag it onto the feature you want to snap it to, and those features will naturally become aligned, regardless of how off-grid the sizing and positioning of the objects happens to be.
Have you ever tried to build a model floating in empty space? This did not work well with the old draggers, as when dragging onto empty space would often make the objects jump into the distance which was not useful behavior. The new draggers use a virtual surface in this case. When dragging a part onto empty space, the new draggers will treat it as though the last surface you were dragging onto extends into the empty space.
Dragging Into a Gap.
Not a feature on its own, but a long standing issue with the old draggers was that it was difficult or impossible to drag a part back into a gap in a model if you accidentally dragged it out. With the new dragging behavior this will not be an issue.
We hope that this new dragger solves some of the key issues that many of you have pointed out and makes building in Studio a lot easier! Again, this feature is still in beta so we are looking for any and all feedback from all of you. Please keep in mind that we also may be making changes prior to a full release.
Note: Known issue (fix is ready and will be released soon) Currently the Lua draggers are missing a special case where models containing Humanoids should ignore the Join Surfaces option. As a temporary workaround, you can toggle Join Surfaces off when dragging character models.