Смотрите предыдущую статью про передвижение танка. 1.Создаем новую сцену RigidBody2D "bullet". Добавляем скрипт , спрайт и CollisionShape2D. 2. Добавляем спрайт ствола. При помощи команды $'название спрайта'.look_at(get_global_mouse_position()) заставляем его смотреть в сторону мыши. 3. Пишем скрипт выстрела. В скрипте игрока добавляем переменную bullet с помощью var bullet=preload(перетаскиваете сцену пули сюда ) . Добавляем новую функцию shoot командой func shoot(): . Создаем новую переменную b командой var b=bullet.instantiate() ,передаем позицию и поворот от ствола командой b.transform=$'название спрайта'.global_transform. Командой get_tree().get_root().add_child(b) добавляем дочерний объект пулю к основной сцене, чтобы она не зависела от положения самого танка. Проверяем на нажатие кнопки выстрела командой if Input.is_action_just_pressed('shoot'):
shoot() shoot() вызывает нашу функцию выстрела Весь код на данный момент выглядит так. extends RigidBody2D @onready var vel=Vector2