SpecialEquipment/Assets/scrip/RotateAndScale.cs

56 lines
1.4 KiB
C#

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(0))
{
isRotating = true;
lastMouseX = Input.mousePosition.x;
}
if (Input.GetMouseButtonUp(0))
{
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;
}
}
}