Think of your ideal hero in your story. They are smart, but relatable. They are the kind of people we all are; flaws and all. Now think of some jerk storming in your writing space. They punch your smart, relatable, boring person and demand that THEY are now the stories protagonist. That is who you should right about. No one likes to read about a wimp protagonist. We have to live with our normal and rational fears everyday; why would we want to read about them? We want to read about someone smarter than us who has focus on a goal and doesn’t quit; the world be damned.
The one area I’ve found this is really tricky, is the protagonist slipping in to become the villain of the story. Like a villain they begin to con you and , as an author, you make excuses for them. They were really mad, but here is why that was justified. They did do that bad thing, but the it was for a good reason. Don’t worry; they get better.
I believe what separates aggressive hero and villain is “a code”. Some obvious symptom or tick that makes us believe this one is the hero. The villain is an unchecked, code-less, fickle creature. The hero has a code and a goal; but so long as it fits in both – world be damned. Perhaps this is what helps add depth to the hero. He has to find ways to achieve his goal, but has a self limiter. The depth in the character is achieved when the reader is surprised by how the hero adheres to the rules, but get’s it done.
For example, a hero has a moral code that he can do no violence against others. On his way home, he is cornered by a gang of thugs. As they start to close in, the hero can’t run (that would make him a wimp protagonist). He also can’t fight, that would make him no better than the thugs. To solve the problem, he lights his sleeve on fire to fend off the thugs. (Remember – violence against others DOESN’T include himself) We know he’s better and badder than the thugs. No wimp protagonist there!