キャラクタ毎に角度情報を持たせて、壁にぶつかる毎に90度角で増減して三角関数で移動方向を決めたら後退しないし、袋小路では戻ってくる感じになるんじゃないでしょうか? 駄目かな?