Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 放大/缩小时的Unity相机平移_C#_Unity3d - Fatal编程技术网

C# 放大/缩小时的Unity相机平移

C# 放大/缩小时的Unity相机平移,c#,unity3d,C#,Unity3d,我有一种方法,可以前后左右平移相机。我不知道为什么,但是什么原因导致相机在靠近地形时移动得很好,而在缩小时移动得很慢 以下是我如何摇摄相机: void CameraPan(){ if(Input.GetMouseButton(2)){ transform.rotation = transform.rotation; transform.Translate(Vector3.right * -Input.GetAxis("Mouse X") * 20f, Sp

我有一种方法,可以前后左右平移相机。我不知道为什么,但是什么原因导致相机在靠近地形时移动得很好,而在缩小时移动得很慢

以下是我如何摇摄相机:

void CameraPan(){
    if(Input.GetMouseButton(2)){
        transform.rotation = transform.rotation;
        transform.Translate(Vector3.right * -Input.GetAxis("Mouse X") * 20f, Space.World);
        transform.Translate(Vector3.forward * -Input.GetAxis("Mouse Y") * 20f, Space.World);
    }
}
下面是我如何缩放的:

void CameraZoom(){
    float scroll = Input.GetAxis("Mouse ScrollWheel");
    if(scroll < 0){
        transform.Translate(0, 0, scroll * scrollSpeed);
    }else if(scroll > 0){
        transform.Translate(0, 0, scroll * scrollSpeed);
    }
}
void CameraZoom(){
float scroll=Input.GetAxis(“鼠标滚轮”);
如果(滚动<0){
transform.Translate(0,0,滚动*滚动速度);
}否则如果(滚动>0){
transform.Translate(0,0,滚动*滚动速度);
}
}

无论放大还是缩小,如何以相同的速度平移相机?

计算缩放因子-此数字可以是表示缩放的任何数字(例如,它可以是相机到视图中心对象的距离)


当您计算CameraPan时,使用此缩放因子乘以Translate参数(例如,如果您的缩放因子是距离,则当您缩小=在更大的距离时,您将平移更多)

,因为相机离目标越远,横向移动(如平移)会导致较少的视觉变化——这就是为什么即使在你行驶数百英里后,太阳似乎也不会在天空中移动。也许你可以通过改变相机的焦距来取而代之?我已经试过了,问题是一切看起来都太奇怪了。