Translate() перемещает объекты без проверки на столкновения. То есть, предметы не будут останавливаться при визуальном столкновении со стенами и прочем, а просто проходить сквозь, даже без вызова методов типа OnCollisionEnter() и прочее.
Второй нефизический способ - это модификация transform.position напрямую.
Если тебе нужно, чтоб персонаж прыгал, падал, отталкивался от стен, сам толкал блоки и т.д. - то тебе нужны физические способы, потому что перечисленные штуки и есть суть физического движения.
_rb.AddForce() - позволяет прикладывать силы к физическому объекту, а физ.движок сам обсчитает, как именно это повлияет на конечный вектор скорости объекта.
_rb.velocity (это свойство, а не функция, как вы написали) - редактирование вектора движения напрямую. Задаёшь конечный вектор скорости, а физический движок уже двигает объект.