Ситуация такова - есть 2 игрока, которые могут перемещаться и стрелять в друг друга в поле битвы. Когда они стреляют в друг друга, то пуля летит в то направление, где стоял противник во время выстрела. Если пуля не попала по врагу, то он просто дальше продолжает лететь и ударяясь об стену, он меняет свое направление по законам физики и дальше продолжает свой путь. То есть пуля не исчезнет никогда, а продолжит парить в поле.
Как это сделать? Чтобы объект (пуля) "свободно" и равномерно летел, и при столкновении со стеной, он менял свое направлении (рикошетил)? (C# скрипт, или как еще можно это сделать).
Проще всего такое делать физикой. Чтобы пули взаимодействовали с коллайдерами вам нужно повесить на них Rigidbody и отключить трение и гравитацию. Помимо этого на коллайдер пули нужно повесить физический материал с нулевым трением и единичной прыгучестью, чтобы при столкновении пули не тормозились. При выстреле запускаете пули с помощью Rigidbody.AddForce или Rigidbody.velocity, и после этого они будут вечно лететь и отскакивать от всех поверхностей.
все что вы описали..делать ФИЗИКОЙ.
на пулю вешаем Rigitbody https://docs.unity3d.com/ru/530/Manual/class-Rigid...
и на старте придаем ей силу/скорость/ускорение.
чтоб рикошетило от стен и прочего - надо чтоб стены и прочее содержали коллайдеры. почитайте про физику в Unity. тут парочка офф видео уроков - вам все прояснили б.