You can achieve your goal by editing the Behavior tree and setting the Birds default settings.
First with your Birds settings. you can edit the settings on the Bird Parent class or you can set the settings on a per Bird basis.
It sounds like you are using the Pigeon so open the “BP_NPC_Pigeon” Blueprint.
in the default settings on the right disable (uncheck) “can this Bird Perch?” because you are only interested in flight and ground interaction.
next disable (uncheck ) “Begin the Level Flying?” and Enable (Check) “Begin the Level walking?” also be sure “Begin the Level Perched?” is disabled as well.
next look at the Ground speed Min and Max values. You said the birds were sliding on the ground, these settings will help with that. When a bird is set to walk on the ground they are given a random walk speed between these two numbers. So play around those.
The Fly speed Min and Max work similarity with flight speed.
Next look at the “Fly Time Min” and “Fly Time Max” settings. Here when the Bird is set to fly they will get a random fly time between those two numbers. when that timer goes off they will do a dice roll to decide to keep flying or return to the ground. if its to go to the ground they will look for a random ground target.
Next lets talk about obstacle avoidance. You can turn obstacle avoidance off by disabling “Do a Down Trace?” or if you want the avoidance- be sure “Do a Down Trace?” is enabled. Connected to this is the “down trace distance” and “vertical thrust amount”. How this works is the bird sends down a line trace that is the length of the “down trace distance” and if it gets a hit on the trace the Bird is given upward thrust to get out of the way. The reason that I’m pointing this out is your Sky Targets need to be up higher than this trace distance.
once your happy with these settings be sure to save and compile the blueprint
Now in your level place a ground target where you want your Birds to land. and place at least 2 Sky targets up in the sky up at least as high as your “Down trace distance” the reason it needs to be higher is if its too low the bird will be trying to both reach and avoid the target at the same time. I hope that makes sense. if not I can clarify. and because you disabled perching, don’t worry about the Perch Targets in your level.
Ok so the last thing to worry about is in the Behavior tree. open the behavior tree in the AI folder.
On the right of the behavior tree (See image) is the “patrol” section-
the bird sets a random walk speed, walks to a point then it will wait (Idle, Feed) for what time you set on the Wait node, then it will walk to a new spot. by default they look for a spot to walk to that is 2000 units away. you can change this distance. Double click the “BTTask_Bird_GetRandomPoint node”.
Set the distance for the bird to walk here. save and compile.
Back in the Behavior tree select the “move to” node and set the acceptable radius to a lower setting this setting needs to be smaller than the distance you set in the GetRandomPoint node.
And lastly for your situation in this patrol section you will probably want to delete the last flyaway node.
By default the bird patrols to 3 locations then jumps away and returns to flight. But if I’m right- you want them to stay on the ground until disturbed by an enemy. If that’s true by deleting the last node here the birds will stay on the ground paroling until an enemy scares them away. Save and compile again and do some testing.
Let me know if this gets you where you want to be. I hope this is helpful to you and anyone else looking to adjust the Birds behavior.