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

  1. Enable the plugin in Project → Project Settings → Plugins.
  2. Select the object you want to position.
  3. Hold Alt and drag with the left mouse button over the target surface.
  4. Release the button to confirm (the action is added to the editor's Undo/Redo, Ctrl+Z works 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 a StaticBody3D, Area3D, etc.) or a CSGShape3D with use_collision enabled 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 Node3D at 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.

Reviews

Recommended by Gregory Blazek - 18 August 2026

Really neat and simple time saver! Even my monkey brain can use it. Thanks for making this :D

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.