Here is the Behavior Tree I used for the Lizard Enemy in the “Lizards” game demo. In some respects it’s kind of like a graphically modeled version of scripted if-then-else statements. And honestly, for this small of a project, it may have been better to use a mess of if-then-else statements. But it’s nice that there’s a bit more scalability to this approach. I can reuse these trees easily for different enemies and keep expanding the tree with more complex behaviors.
Two key elements I found very useful to have were the Check action and ExitIf Decorator. Check just returns success or failure if its given string expression is true or false. ExitIf is pretty much the same thing, but in the reverse. It returns failure if true and success if false, thus exiting out of a subtree if the condition is met. There’s a little bit of reflection magic here, but your expressions are still limited to (&&,||, and !). See the code for this below.