Чтобы ограничить вращение объекта только вокруг оси Y, можно использовать скрипт поворота объекта по оси Y с помощью функции Transform.Rotate(). Например, можно создать скрипт, который будет следить за позицией другого объекта и поворачивать текущий объект только по оси Y, чтобы он всегда направлялся к целевому объекту.
Чтобы ограничить движение "дула" по оси X в пределах от -14 до 31, можно просто добавить условие в скрипт, который отвечает за его движение. Например, можно использовать условие if для проверки текущей позиции "дула" по оси X и ограничить ее в нужных пределах. Например, в коде вы можете добавить следующее условие:
```csharp
if(transform.position.x < -14f)
{
transform.position = new Vector3(-14f, transform.position.y, transform.position.z);
}
if(transform.position.x > 31f)
{
transform.position = new Vector3(31f, transform.position.y, transform.position.z);
}
```
Таким образом, "дуло" не сможет двигаться за пределами от -14 до 31 по оси X, но при этом останется свободным двигаться за другим объектом по оси Y.