1.Unity摄像机之焦距某点缩放
Unity摄像机之焦距某点缩放
在游戏开发中,码分细致观察某些对象是码分必要的。通常,码分我们可以通过鼠标滑动来达到这一目的码分。在Scene面板中,码分动态权限源码编译我们可以直观地看到这一过程。码分gradle java 源码目录然而,码分当我们观察到鼠标距离越远,码分消失或生成的码分速度越快时,且摄像机中心点与鼠标的码分Viewport距离始终不变,会发现实现这一功能相对复杂。码分因此,码分我上网寻找相关源码,码分暗黑修仙前端源码发现只有UI上的码分放大方法是通过改变锚点实现的。但在非UI场景中,码分如何实现这一功能呢?
首先,我将Camera设置为Orthographic模式,彩友多源码因此需要通过改变Size来实现缩放效果。
其中,Size的值等于
我是通过横向来确定Size的,如图,源码可以看什么一个小格子占个像素,因此
缩小时,Size值增大;相反,放大时Size值减少。下面简单解释一下原理。
假设相机在最左下点,鼠标点在中心点,其他如下:
size:放大后的orthographicSize(已知)
oldSize:放大前的orthographicSize(已知)
mousePos:鼠标位置的世界坐标 = Camera.ScreenToWorldPoint(Input.mousePosition)(已知)
pos:放大前Camera位置坐标 = Camera.transform.position(已知)
newPos:放大后Camera位置坐标
因此,得到以下公式
由于其他条件已知,因此可以求出对应的newPos
主要源码如下:
其中,使用了Dotween插件以实现平滑移动的效果。