瀏覽代碼

Merge pull request #47960 from smix8/issue_47334_navagent2d_target_reached

Rémi Verschelde 4 年之前
父節點
當前提交
3a0cfd3d85
共有 2 個文件被更改,包括 12 次插入6 次删除
  1. 11 6
      scene/2d/navigation_agent_2d.cpp
  2. 1 0
      scene/2d/navigation_agent_2d.h

+ 11 - 6
scene/2d/navigation_agent_2d.cpp

@@ -104,12 +104,7 @@ void NavigationAgent2D::_notification(int p_what) {
 		case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
 			if (agent_parent) {
 				NavigationServer2D::get_singleton()->agent_set_position(agent, agent_parent->get_global_transform().get_origin());
-				if (!target_reached) {
-					if (distance_to_target() < target_desired_distance) {
-						emit_signal("target_reached");
-						target_reached = true;
-					}
-				}
+				_check_distance_to_target();
 			}
 		} break;
 	}
@@ -305,6 +300,7 @@ void NavigationAgent2D::update_navigation() {
 		while (o.distance_to(navigation_path[nav_path_index]) < target_desired_distance) {
 			nav_path_index += 1;
 			if (nav_path_index == navigation_path.size()) {
+				_check_distance_to_target();
 				nav_path_index -= 1;
 				navigation_finished = true;
 				emit_signal("navigation_finished");
@@ -313,3 +309,12 @@ void NavigationAgent2D::update_navigation() {
 		}
 	}
 }
+
+void NavigationAgent2D::_check_distance_to_target() {
+	if (!target_reached) {
+		if (distance_to_target() < target_desired_distance) {
+			emit_signal("target_reached");
+			target_reached = true;
+		}
+	}
+}

+ 1 - 0
scene/2d/navigation_agent_2d.h

@@ -140,6 +140,7 @@ public:
 
 private:
 	void update_navigation();
+	void _check_distance_to_target();
 };
 
 #endif