private void LookAt(Vector3 target) => RotationEngine.RotateToTargetWithPlaneLimiter(target); // Повернуть корабль в сторону точки private void GetNextPoint() // Получаем следующую контрольную точку для движения { PreviousTarget = CurrentTarget; CurrentTarget = NextTarget; NextTarget = System_Waypoints.GetNextPoint(CurrentTarget, PreviousTarget); if (NextTarget == null) { SwitchFlightMode(FlightMode.Normal); isMoveToPoint = false; } }
private void UpdatePath(Vector3 Target) { i = 0; NavMesh.CalculatePath(transform.position, Target, NavMesh.AllAreas, NavMeshPath); if (NavMeshPath.status != NavMeshPathStatus.PathInvalid) { MoveTargetOnNavMesh(); } else { pointsPairs = System_Waypoints.GetPointsClose(Target); while (i < pointsPairs.Length && NavMeshPath.status == NavMeshPathStatus.PathInvalid) { NavMesh.CalculatePath(transform.position, pointsPairs[i].Value.position, NavMesh.AllAreas, NavMeshPath); i += 1; } MoveTargetOnNavMesh(); } }
private void FindBetterPoint() { PreviousTarget = CurrentTarget; CurrentTarget = NextTarget; NextTarget = System_Waypoints.GetBetterPointInDistance(transform, betterPointMinDistance); }
private void FindClosestPoint() { PreviousTarget = CurrentTarget; CurrentTarget = NextTarget; NextTarget = System_Waypoints.GetClosestPoint(transform); }
//xxxxxxxxxxxxxxxxxxxxxxxx private void Awake() => System_Waypoints.SetMovePoints(MovePoints, PointsTr);