unity 鼠标拉近拉远旋转相机
时间: 2023-06-22 16:37:57 浏览: 95
你可以使用Unity中的Input.GetAxis("Mouse ScrollWheel")来获取鼠标滚轮的滚动值,然后根据该值来调整相机的距离。例如,你可以将相机的距离与滚轮滚动值相乘,从而使相机向前或向后移动。
对于相机的旋转,可以使用Input.GetAxis("Mouse X")和Input.GetAxis("Mouse Y")来获取鼠标在X和Y轴上的移动值,并将这些值作为旋转的输入。可以使用Transform.RotateAround函数来实现相机的旋转。例如,可以使用以下代码来实现相机围绕目标对象旋转:
```csharp
public Transform target; // 目标对象
public float distance = 10.0f; // 相机距离目标的距离
public float sensitivity = 5.0f; // 鼠标灵敏度
private float currentX = 0.0f;
private float currentY = 0.0f;
void Update()
{
float scroll = Input.GetAxis("Mouse ScrollWheel");
distance += scroll * sensitivity;
currentX += Input.GetAxis("Mouse X") * sensitivity;
currentY -= Input.GetAxis("Mouse Y") * sensitivity;
Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
transform.position = target.position - rotation * Vector3.forward * distance;
transform.LookAt(target.position);
}
```
在这个示例中,我们使用鼠标滚轮来调整相机的距离,使用鼠标移动来旋转相机,并使用Quaternion.Euler函数将旋转值转换为四元数。然后,我们使用Transform.position和Transform.LookAt函数来设置相机的位置和方向。
阅读全文