Самый простой способ сделать это (учитывая, что ваш игрок правильно определен как древовидная структура, голова, торс, рука и т. Д. c), это назначить оружию местное положение руки или, что еще лучше положить оружие как дочерний узел вашей руки. Поэтому, когда вы будете вносить какие-либо изменения в руку, трансформация, вращение и c ваше оружие будет реагировать соответственно. Просто найдите «руку» в структуре вашего игрока, а затем назначьте «Weapon.Parent = Hand» (это, конечно, псевдокод, но вы знаете суть).
Конечно, если у вашего оружия уже была назначена позиция в мире, после создания это потомок руки игрока, вам нужно будет снова установить положение оружия, относительно положения руки (вы можете установить его на Vector3.zero и посмотреть, что вы получите в результате)