diff --git a/editor/scene/3d/node_3d_editor_plugin.cpp b/editor/scene/3d/node_3d_editor_plugin.cpp index 216c69e570..6611dbcd19 100644 --- a/editor/scene/3d/node_3d_editor_plugin.cpp +++ b/editor/scene/3d/node_3d_editor_plugin.cpp @@ -5879,7 +5879,13 @@ void Node3DEditorViewport::update_transform(bool p_shift) { Vector3 current_rotation_vector = (intersection - _edit.center).normalized(); if (_edit.initial_click_vector == Vector3()) { - _edit.initial_click_vector = (click - _edit.center).normalized(); + Plane rotation_plane(global_axis, _edit.center); + Vector3 click_on_rotation_plane; + if (rotation_plane.intersects_ray(_edit.click_ray_pos, _edit.click_ray, &click_on_rotation_plane)) { + _edit.initial_click_vector = (click_on_rotation_plane - _edit.center).normalized(); + } else { + _edit.initial_click_vector = (click - _edit.center).normalized(); + } _edit.previous_rotation_vector = current_rotation_vector; _edit.accumulated_rotation_angle = 0.0; _edit.display_rotation_angle = 0.0;