Răsfoiți Sursa

Merge pull request #78850 from smix8/navagent_velocity_fix_4.x

Fix NavigationAgent continues avoidance velocity
Rémi Verschelde 2 ani în urmă
părinte
comite
9da070fe05
2 a modificat fișierele cu 10 adăugiri și 0 ștergeri
  1. 5 0
      scene/2d/navigation_agent_2d.cpp
  2. 5 0
      scene/3d/navigation_agent_3d.cpp

+ 5 - 0
scene/2d/navigation_agent_2d.cpp

@@ -755,6 +755,11 @@ void NavigationAgent2D::update_navigation() {
 				navigation_path_index -= 1;
 				navigation_finished = true;
 				target_position_submitted = false;
+				if (avoidance_enabled) {
+					NavigationServer2D::get_singleton()->agent_set_position(agent, agent_parent->get_global_position());
+					NavigationServer2D::get_singleton()->agent_set_velocity(agent, Vector2(0.0, 0.0));
+					NavigationServer2D::get_singleton()->agent_set_velocity_forced(agent, Vector2(0.0, 0.0));
+				}
 				emit_signal(SNAME("navigation_finished"));
 				break;
 			}

+ 5 - 0
scene/3d/navigation_agent_3d.cpp

@@ -801,6 +801,11 @@ void NavigationAgent3D::update_navigation() {
 				navigation_path_index -= 1;
 				navigation_finished = true;
 				target_position_submitted = false;
+				if (avoidance_enabled) {
+					NavigationServer3D::get_singleton()->agent_set_position(agent, agent_parent->get_global_transform().origin);
+					NavigationServer3D::get_singleton()->agent_set_velocity(agent, Vector3(0.0, 0.0, 0.0));
+					NavigationServer3D::get_singleton()->agent_set_velocity_forced(agent, Vector3(0.0, 0.0, 0.0));
+				}
 				emit_signal(SNAME("navigation_finished"));
 				break;
 			}