UGUI中点击鼠标左键实现相机绕物体旋转和缩放的代码
时间: 2024-01-21 22:16:29 浏览: 74
利用鼠标实现图片移动和缩放
4星 · 用户满意度95%
以下是一个简单的示例代码,可以让相机围绕物体进行旋转和缩放:
```csharp
using UnityEngine;
public class ObjectRotate : MonoBehaviour
{
public Transform target; // 目标物体
public float rotateSpeed = 5f; // 旋转速度
public float zoomSpeed = 2f; // 缩放速度
public float minDistance = 1f; // 最小距离
public float maxDistance = 10f; // 最大距离
private Vector3 offset; // 初始偏移量
private float distance; // 相机与目标物体的距离
void Start()
{
offset = transform.position - target.position;
distance = offset.magnitude;
}
void LateUpdate()
{
// 缩放
float scroll = Input.GetAxis("Mouse ScrollWheel");
distance -= scroll * zoomSpeed;
distance = Mathf.Clamp(distance, minDistance, maxDistance);
// 旋转
if (Input.GetMouseButton(0))
{
float horizontal = Input.GetAxis("Mouse X") * rotateSpeed;
float vertical = Input.GetAxis("Mouse Y") * rotateSpeed;
transform.RotateAround(target.position, Vector3.up, horizontal);
transform.RotateAround(target.position, transform.right, -vertical);
}
// 更新相机位置
transform.position = target.position + offset.normalized * distance;
}
}
```
在脚本中,我们定义了目标物体、旋转和缩放速度、最小和最大距离等参数,并在 `Start()` 方法中计算了初始偏移量和距离。在 `LateUpdate()` 方法中,我们根据鼠标滚轮缩放相机距离,根据鼠标左键旋转相机,并根据距离更新相机位置。
请注意,这只是一个简单的示例代码,你可以根据需要进行修改和优化。
阅读全文