1.Unity摄像机之焦距某点缩放
Unity摄像机之焦距某点缩放
在游戏开发中,码解细致观察某些对象是码解必要的。通常,码解我们可以通过鼠标滑动来达到这一目的码解。在Scene面板中,码解jsapi源码我们可以直观地看到这一过程。码解微博图册源码然而,码解当我们观察到鼠标距离越远,码解消失或生成的码解速度越快时,且摄像机中心点与鼠标的码解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插件以实现平滑移动的效果。