public static BTStatus LandMovement(Animal agent, Vector2 direction, float speed, AnimalAnimationState state, float minDistance = 2f, float maxDistance = 20f, float minDirectionOffsetDegrees = 0, float maxDirectionOffsetDegrees = 360, int tryCount = 10) { var search = AIUtilities.FindRoute(agent.Position, 2f, 20f, direction); if (search != null) { var smoothed = search.LineOfSightSmooth(agent.Position); PiecewiseLinearFunction route = AIUtilities.ProjectRoute(smoothed, speed); agent.NextTick = WorldTime.Seconds + route.EndTime; agent.Target.SetPath(route); agent.AnimationState = state; return BTStatus.Success; } else return LandAnimalUnStuckOrDie(agent, speed, state); }