【问题标题】:How to make a perfect pinch zoom (Unity 3D)如何制作完美的捏缩放(Unity 3D)
【发布时间】:2014-10-27 18:21:09
【问题描述】:

我正在寻找一种解决方案,如何通过向前移动相机来在 Unity 中进行完美的捏合缩放:

设置: 以所有游戏对象为中心的水平平面。 具有 FOV 10 的透视相机,在 (10,10,10) 处偏移,以 45 度角向下看,因此它会看到原点(还有围绕指向上方的轴旋转 45 度来实现这一点)。

我需要什么: 当我将两根手指放在屏幕上时,我正在用它们触摸两个游戏对象——因此手指下的屏幕坐标对应于某些世界坐标。当我进行捏合运动(移动两个手指或只移动一个手指)时,我希望新的屏幕坐标对应于整个交互开始时手指下方的相同世界坐标。 所以为了进一步简化 - 每当我用两根手指触摸屏幕时,我希望与我手指下的屏幕坐标相对应的世界坐标始终保持在手指下(允许非常小的误差范围)。

我正在寻找的完美缩放示例可以在 Supercell 的手机游戏 Boom Beach 中看到。

我已经尝试沿着它的前向矢量移动相机并重新定位它,我得到了很好的结果,但几乎总是游戏对象从我的手指下“滑落”,即在某些点不再在下面他们。如果有一个数学解决方案会很好,但如果有必要计算答案(例如通过一些搜索),那么这完全没问题。

如果设置/场景不清楚,我可以提供一些草图来澄清一下。

希望有人可以帮助我! :)

【问题讨论】:

    标签: unity3d zooming pinchzoom perspectivecamera


    【解决方案1】:

    如果您使用 GameObjects 来确定手指的位置,我会设置一个系统来检测用户何时放大和缩小,这很容易使用 Vector3.distance 完成。之后,我将使用 Vector3.MoveTowards(camera position, desired position, the speed of movement) 将相机移动到更接近所需缩放级别的功能,其中我将“移动速度”设置为 mathf.sqrt(vector3 .distance(相机位置,所需位置)); 至于“期望的位置”,我会将 Vector3(position) 设置为代表您的最大和最小缩放级别的两个游戏对象之间的一条线的一部分。 编辑:有了这个,你应该有一个非常好的相机系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      相关资源
      最近更新 更多