Example #1
0
	protected Vector2 SteerToFollowPath(int direction, float predictionTime, Path path)
	{
		float pathDistanceOffset = direction * predictionTime * speed;
		Vector2 futurePosition = PredictFuturePosition(predictionTime);
		
		float nowPathDistance =	path.MapPointToPathDistance(position);
		float futurePathDistance = path.MapPointToPathDistance(futurePosition);
		
		bool rightway = ((pathDistanceOffset > 0) ? (nowPathDistance < futurePathDistance) : (nowPathDistance > futurePathDistance));

		Vector2 tangent;
		float outside;

		path.MapPointToPath(futurePosition, out tangent, out outside);
		
		if ((outside < 0.0f) && rightway)
		{
			return Vector2.zero;
		}
		else
		{
			float targetPathDistance = nowPathDistance + pathDistanceOffset;
			Vector2 target = path.MapPathDistanceToPoint(targetPathDistance);
			
			return SteerForSeek (target);
		}
	}