Unity3d 自上而下相机角度聚焦
我正在做一个自上而下的游戏,相机成40度角。我想做的是,当我单击一个游戏对象时,它将移动相机,并将对象定位在相机视图中心的左侧,而不考虑其旋转。这样我就可以把菜单放在右边了。如何获取角度相机的偏移量,以便对象位于相机视图的左侧()? 现在我使用的是lerp,但由于摄像机角度的原因,它超出了目标。对不起,我是unity3d的新手Unity3d 自上而下相机角度聚焦,unity3d,camera,topdown,Unity3d,Camera,Topdown,我正在做一个自上而下的游戏,相机成40度角。我想做的是,当我单击一个游戏对象时,它将移动相机,并将对象定位在相机视图中心的左侧,而不考虑其旋转。这样我就可以把菜单放在右边了。如何获取角度相机的偏移量,以便对象位于相机视图的左侧()? 现在我使用的是lerp,但由于摄像机角度的原因,它超出了目标。对不起,我是unity3d的新手 transform.position = Vector3.Lerp(transform.position, new Vector3(target.transform.po
transform.position = Vector3.Lerp(transform.position, new Vector3(target.transform.position.x, transform.position.y, target.transform.position.z), 0.1f);
首先,您应该先找到相机将要移动的点 在您的情况下,可以将中的简化为二维空间: 找到那个应该不难
transform.forward
,获取相机所望方向的矢量(Vector3 cameraDir)水平视野/4
:Vector3 cameraDirRotated=四元数角度轴(hFov/4f,Vector3.up)*cameraDir代码>
-cameraDirRotated
将是从立方体到您要查找的点P的向量,您还可以缩放它:
Vector3 PtoMoveTo=cube.transform.position-cameraDirRotated.normalized*5f代码>
全部:
然后:
transform.position = Vector3.Lerp(transform.position, FindCameraTarget(target, 90f) , 2f * Time.deltaTime);
为了提高性能,如果立方体不移动,u可以保存该目标向量一次。搜索网页如何精确计算水平视场。将速度乘以Time.timeDelta,如果u lerp在Update()中。首先,您应该先找到相机将/lerp移动到的点
在您的情况下,可以将中的简化为二维空间:
找到那个应该不难
使用相机的transform.forward
,获取相机所望方向的矢量(Vector3 cameraDir)
围绕y轴旋转水平视野/4
:
Vector3 cameraDirRotated=四元数角度轴(hFov/4f,Vector3.up)*cameraDir代码>
-cameraDirRotated
将是从立方体到您要查找的点P的向量,您还可以缩放它:
Vector3 PtoMoveTo=cube.transform.position-cameraDirRotated.normalized*5f代码>
全部:
然后:
transform.position = Vector3.Lerp(transform.position, FindCameraTarget(target, 90f) , 2f * Time.deltaTime);
为了提高性能,如果立方体不移动,u可以保存该目标向量一次。搜索网页如何精确计算水平视场。如果u lerp处于更新()中,则将速度乘以Time.timeDelta