2014-09-03 68 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(位置)設置爲表示最大和最小縮放級別的兩個遊戲對象之間的一條線的一部分。編輯:與此,你應該有一個非常漂亮的相機系統