在Unity中调整3D视角,可以使用以下方法:
使用鼠标操作
右键拖动:控制视角的旋转。通过`GetAxis`获取鼠标在x和y方向上的平移距离,并据此旋转相机本体坐标系的x轴和y轴。
滚轮旋转:控制视角的缩放。通过监听滚轮事件,实现视角的缩放功能。
中键拖动:控制视角的平移。获取中键在屏幕坐标系下的平移方向向量,转换为世界坐标系下目标物体的平移,然后调整相机的位置以实现平移,确保旋转和缩放不受影响。
代码示例
```csharp
using UnityEngine;
public class CameraController : MonoBehaviour
{
public Camera targetCamera; // 要跟踪的相机
public float sensitivity = 10.0f; // 鼠标灵敏度
void Update()
{
// 右键拖动控制旋转
if (Input.GetMouseButton(2))
{
float deltaX = Input.GetAxis("Mouse X") * sensitivity;
float deltaY = Input.GetAxis("Mouse Y") * sensitivity;
targetCamera.transform.Rotate(Vector3.up, deltaX);
targetCamera.transform.Rotate(Vector3.left, deltaY);
}
// 滚轮旋转控制缩放
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
targetCamera.transform.localScale += new Vector3(0.0f, Input.GetAxis("Mouse ScrollWheel"), 0.0f) * sensitivity;
}
// 中键拖动控制平移
if (Input.GetMouseButton(1))
{
Vector3 mousePosition = Input.mousePosition;
Vector3 worldPosition = targetCamera.ScreenToWorldPoint(mousePosition);
Vector3 deltaPosition = mousePosition - new Vector3(mousePosition.x, mousePosition.y, 0.0f);
targetCamera.transform.position += deltaPosition;
}
}
}
```
注意事项
确保脚本挂载在主相机上,并且跟踪的目标物体已经设置好。
根据需要调整`sensitivity`参数,以获得最佳的操作体验。
如果需要跟踪特定角色的视角,可以将脚本中的`targetCamera`变量指向该角色,并移除中键平移的功能。
通过以上方法,你可以在Unity中轻松实现3D视角的调整,包括旋转、缩放和平移。