Самое простое, что приходит в голову - в каждом кадре считать вектор движения (дельта текущей позиции и позиции в прошлом кадре) и при столкновении с препятствием прикладывать силу в обратном этому вектору направлении. Если вы не используете физический движок, придется дописать метод, который будет вызываться при коллизии и по вашим правилам двигать персонажа назад.