OK my buildings used to consist of several parts.
outside
ground floor
2nd floor
breaking them up like this was supposed to mean I could keep the 2nd floor ( the ground floor) turned off when out of range. I merged them together and enclosed the bottom of the mesh, and this APPEARS to have solved problem where the player passes through the middle of a wall.
I’m still having problems with the corners.
If you push into the corner even briefly, you will pop out the other side of the wall.
It is generally not a good idea to set the position of an object (with transform.Translate or whatever) when it is under physics control with a rigidbody. This would almost certainly explain why your object sometimes moves through walls. If you add forces to move the rigidbody, you will usually get correct collisions, but you might also consider using a CharacterController instead of a rigidbody to control movement.
Well, Unity has a very good physics system, but it is very common to animate objects kinematically, too.
If you want your characters to react to forces physically, then the physics engine is certainly the way to go, and you will indeed want a rigidbody on the object for this. However, to cooperate with the physics engine, you should move rigidbody objects using the rigidbody methods like AddForce, etc. If you set the positions of objects using transform.Translate, then you will often defeat the physics engine, because you haven’t let it keep track of the objects’ motion.