I have changed the enemy system to use a combination of NavMesh and internal collision avoidance. The enemies can still be knocked around using the physics system and they can overshoot targets when they have built up too much inertia. So they can now navigate any level layout pretty reliably, but they still act like idiots if you fake them out, or push them around.
I have started rebuilding player attacks alongside setting up the game controls. Using the Unity asset Rewired has helped a ton, but there are still a lot of fidgety things to deal with if you want to support a bunch of different controllers. XboxOne and 360 controls work fine so far. I have a generic gamepad and it needs a bit extra tweaking to work properly. Still have to test ps3-ps4 etc.
The player can select between different characters, but I only have the one set up for testing. I’ll have to add more when the enemies attacks are more consistent and they have more special case behaviours, like deciding to push the player toward the nearest hole or edge.