If you don't mind that they go to food that is merely nearby rather than to food that they can see, you may be able to use something like the following, but with ItemGet() instead:

Code
REACTION PlayerDetected,500
USAGE ALL
VARS
	CHARACTER:_Char
CHECK "c1&c2"
	CharacterGet(_Char,__Me,3.0,Lowest,Distance,null,null,null,null,null)
	CharacterIsPlayer(_Char)
ACTIONS
	GlobalSetEvent("LEP_HitPlayer")


After you assign this reaction to an animal, it definitely triggers when a player character moves into range. I only tested it with both the animal and the player moving though, and I don't know whose movement triggers the re-evaluation of the CharacterGet() condition. If it's the player, then this probably won't help.

If the above reaction does not trigger automatically, a more complicated workaround could be to detect when food is dropped, and in that case move the animals to the food if it's nearby. There are some caveats with this though:
1) a "food has been dropped" event can only be detected from Osiris, so you then have to broadcast an event to your charScripts (which then can use ItemGet())
2) don't use ItemHandleDropped() in combination with ItemGet() in a charScript, because when ItemHandleDropped() fires, ItemGet() won't be able to find it yet. Instead, use ItemTemplateMoved(), which triggers after the item has in fact been dropped. This event will obviously trigger in more situations, but given that you just use it trigger ItemGet(), that's not really a problem.

This is the story handler for 2) from my ReSource mod (which has been dormant for quite a while now because I've been busy with other things, but one day...)
Quote

//REGION Detect new items available in/on loading/unloading platforms
// Don't use ItemHandleDropped(): charScript's ItemGet() only finds items
// after the subsequent ItemTemplateMoved() event has fired, and we also
// want to detect items that were only moved and not necessarily picked up
// and dropped.
//
// Note: this will also be triggered when a harvester or player picks up
// such an item, and there is no way to know who did it...
IF
ItemTemplateMoved(_ItemTemplate,_)
AND
DB_RESOURCE_TransportLoadingPlatformTrigger(_,_Platform,_)
AND
ItemGetVarFixedString(_Platform,"LoadItemTemplateGUID1",_GUID)
AND
StringContains(_ItemTemplate,_GUID,1)
THEN
ItemSetEvent(_Platform,"RESOURCE_ResourceCollectionPlaceNewItemAvailable");