Для ограничения вращения объекта по оси X в Unity можно использовать код следующим образом:
```csharp
public float maxXRotation = 44f;
public float minXRotation = -26f;
void Update()
{
float rotationX = Input.GetAxis("Mouse Y");
float currentRotationX = transform.eulerAngles.x;
float newRotationX = currentRotationX - rotationX;
newRotationX = Mathf.Clamp(newRotationX, minXRotation, maxXRotation);
transform.eulerAngles = new Vector3(newRotationX, transform.eulerAngles.y, transform.eulerAngles.z);
}
```
Этот код ограничит вращение объекта по оси X в пределах от -26 до 44 градусов.
Чтобы реализовать вращение дула вокруг оси X и одновременно вращение за башней по оси Y, можно использовать два отдельных скрипта для управления вращением по каждой из осей. Например, скрипт для вращения дула по оси X может выглядеть следующим образом:
```csharp
public float maxXRotation = 44f;
public float minXRotation = -26f;
void Update()
{
float rotationX = Input.GetAxis("Mouse Y");
float currentRotationX = transform.eulerAngles.x;
float newRotationX = currentRotationX - rotationX;
newRotationX = Mathf.Clamp(newRotationX, minXRotation, maxXRotation);
transform.eulerAngles = new Vector3(newRotationX, transform.eulerAngles.y, transform.eulerAngles.z);
}
```
А скрипт для вращения объекта за башней по оси Y может выглядеть примерно так:
```csharp
public float rotationSpeed = 5f;
void Update()
{
float rotationY = Input.GetAxis("Mouse X");
transform.Rotate(0, rotationY * rotationSpeed, 0);
}
```
Таким образом, оба скрипта позволят вращать объект по заданным осям с заданными ограничениями. Не забудьте присоединить оба скрипта к вашим объектам в Unity.