using UnityEngine; public class RotateAndScale : MonoBehaviour { [Header("旋转设置")] public float rotationSpeed = 0.2f; // 旋转速度 private bool isRotating = false; private float lastMouseX; [Header("缩放设置")] public float scaleSpeed = 0.5f; // 缩放速度 public float minScale = 0.1f; // 最小缩放 private void Update() { HandleRotation(); HandleScaling(); } private void HandleRotation() { // 按住右键开始旋转 if (Input.GetMouseButtonDown(1)) { isRotating = true; lastMouseX = Input.mousePosition.x; } if (Input.GetMouseButtonUp(1)) { isRotating = false; } if (isRotating) { float deltaX = Input.mousePosition.x - lastMouseX; transform.Rotate(0f, -deltaX * rotationSpeed, 0f, Space.World); // 反方向旋转 lastMouseX = Input.mousePosition.x; } } private void HandleScaling() { float scroll = Input.mouseScrollDelta.y; if (Mathf.Abs(scroll) > 0f) { Vector3 newScale = transform.localScale + Vector3.one * scroll * scaleSpeed; // 只限制最小值 newScale.x = Mathf.Max(newScale.x, minScale); newScale.y = Mathf.Max(newScale.y, minScale); newScale.z = Mathf.Max(newScale.z, minScale); transform.localScale = newScale; } } }