2016-01-13 62 views
1

我有一個攝像頭,我想沿着2個軸(x和z)移動。在局部空間,我們有:在WorldSpace中沿着2個軸移動攝像頭

enter image description here

而且由於相機對象旋轉,在世界空間,我們有:

enter image description here

我想實現的是:沿移動相機2軸通過用戶輸入 - 攝像機從上方觀看平面,並通過按下鍵盤按鈕,用戶可沿平面沿4個平面方向滑動。這可以完美地通過操作transform.position.xtransform.position.y屬性本地空間

雖然我有以下問題:用戶也可以旋轉相機對象。通過這樣做,我不能再操縱局部空間變換,因爲在某些旋轉「向上」開始的意思是「向下」等

我試圖做世界空間中執行以下操作:

transform.Translate(transform.right * user_input, Space.World); 

但是這並沒有達到我想要的東西,因爲transform.right在世界空間中奪取了紅色的矢量。

我想要做的是:沿着紅色和藍色向量在局部空間移動攝像機,但仍保留世界空間中的座標。

如果有人對此提供了一些意見,我將不勝感激。謝謝一堆!

回答

6

這是不是很清楚你在說什麼。

但很平常的事是:

只要有holder對象。如果你願意,也許可以把它想象成一輛「相機車」。隨時保持這個「正方形」,然後移動它。然後,將相機作爲該物體的孩子。

然後,您可以旋轉(或您正在做的任何事情)子對象。當你想要「純粹」的動作時,你可以移動「持有者」對象。

在Unity中這樣做非常普遍,幾乎是不可避免的。

再次我不知道你在問什麼:)但希望這可以解決這個問題。


一兩件事:這是可能的,你的意思是你希望用戶來移動物體,但是,對象始終保持在地面上。如果這就是你的意思,一種方法是:在每一幀結束時(也就是說,在你的更新中添加一行代碼),簡單地強制世界z位置爲零。這樣做很常見,它會讓你走。或者,如果您使用的是Rigidbody,您會很高興知道Inspector中的複選框選擇器用於限制各軸上的移動。

+0

這是我該怎麼做。 –

+0

我已經在3D動畫和Unity中使用了它,以便能夠輕鬆地隔離相機上的轉換,所以我完全贊同這種方法。 – Serlite

+0

是的,這是他們「在手冊中沒有提到」的奇怪事情之一。你在任何地方都會這樣做,並且始終在使用像Unity這樣的遊戲引擎的視頻遊戲中,但它從來沒有真正在任何地方被「解釋」我經常認爲Unity應該固有地嵌入一個嵌套遊戲對象的概念,因爲它是無處不在的,也許是相機上的默認設置。無論如何。 「不管它是什麼」我們的良好OP正在努力實現,這可能是解決方案的一部分! – Fattie