Ну вариант с коллайдерами ничего так.
На самом деле волшебной пули нет. В голову еще приходят варианты с проверкой экранных координат (Camera.main.WorldToScreen... и дальше проверяете если вышел за пределы экрана - телепортаете) при перемещении.
Сохранение скорости и направления - так оно то и не меняется при телепортации - при телепортации вы меняете только координаты. Хотя смотря как задана скорость и направление (по идее должен быть вектор относительно центра объекта).
ВОзвращать надо не в точку появления, а считать новые координаты относительно точки выхода за экран. Например, объект вышел за экран слева. Значит его координата по x меньше нуля (с поправкой на размер - хз где у вас центр). Соответственно делаем x равным длине экрана с поправкой на размер объекта, и все это переводим в мировые. В лоб решение выглядит как то так.
Если вам надо чтобы объект был "жопой слева мордой справа" - т.е. половинные состояния - то тут посложнее.