2014-09-03 72 views
4

我正在寻找一个解决方案,如何通过沿向前移动相机,使在Unity完美的双指缩放:如何使一个完美的双指缩放(团结3D)

设置: 水平面在中心所有Game对象的原点。 透视相机与FOV 10,偏移在(10,10,10)俯视45度角,以便它看起来的原点(也有围绕轴向上旋转45度,实现这一目标) 。

我需要的是: 当我将两个手指放在屏幕上时,我正在触摸两个GameObjects - 因此手指下的屏幕坐标对应于某些世界坐标。当我进行捏动作(移动两个手指或只移动一个手指)时,我希望新的屏幕坐标对应于整个交互开始时在手指下的相同世界坐标。因此,为了进一步简化 - 无论何时我用两根手指触摸屏幕,我都希望与我的手指下的屏幕坐标相对应的世界坐标始终保持在手指下方(允许有很小的误差范围)。

这个完美缩放的例子,我正在寻找你可以看到在手机游戏Boom Beach from Supercell。

我已经试着将相机沿着其向前移动的方向移动,并重新定位它,并且我得到了相当不错的结果,但几乎总是在我的手指下“滑”下面的GameObjects,即在某些点不再在他们下面。如果有一个数学解决方案,这将是非常好的,但如果有必要计算答案(通过一些搜索例子),那么这是完全正确的。

如果安装/场景不清楚,我可以提供一些草图来澄清它。

希望有人能帮助我! :)

回答

0

我会建立一个系统,检测用户放大和缩小时,如果您正在使用GameObjects来查明哪些手指很容易做Vector3.distance。之后,我将使用Vector3.MoveTowards(相机位置,所需位置,移动速度)将相机移动到您想要的缩放级别,在此将“移动速度”设置为mathf.sqrt(vector3 .distance(相机位置,所需位置)); 至于“所需的位置”,我会将Vector3(位置)设置为表示最大和最小缩放级别的两个游戏对象之间的一条线的一部分。编辑:与此,你应该有一个非常漂亮的相机系统