Description
Changelog
Reviews (1)
Surface Snap
An editor plugin for Godot 4.7+ that lets you drag a Node3D directly onto
the surface of another object — unlike the built-in vertex snap, which
only snaps to specific vertices.
Usage
- Enable the plugin in Project → Project Settings → Plugins.
- Select the object you want to position.
- Hold Alt and drag with the left mouse button over the target surface.
- Release the button to confirm (the action is added to the editor's
Undo/Redo,
Ctrl+Zworks normally).
The object's Y axis automatically aligns to the surface normal, and the object is pushed along the normal just far enough for its bounding box to clear the surface — its origin tracks the mouse laterally, so it doesn't get pinned to a corner of the object.
Requirements
- The target (surface) object needs real physics collision:
CollisionShape3D(under aStaticBody3D,Area3D, etc.) or aCSGShape3Dwithuse_collisionenabled in the inspector. - The dragged object does not need a collider (and if it has one, its collision is temporarily disabled during the drag so it can't snap against itself).
- Only one selected
Node3Dat a time (multi-selection is not supported in this version).
Configuration
In Project Settings → Surface Snap → Collision Mask, choose which physics layers count as a valid snap surface (all layers by default).
Known limitations
- The grounding offset is based on the AABB (bounding box), not the actual mesh — for very irregular or non-convex shapes, the contact point may not be the true closest point on the surface.
- Dragging multiple selected objects at once is not supported.
Changelog for version v1.0.1
No changelog provided for this version.