2017-02-21 49 views
2

我試圖建立一個預製件放置在一個小行星上的場景,認爲something like this。我面臨的問題是,儘管我可以使用Control + Shift輕鬆地將預製件放置在球體上,但它們不會旋轉,因此會出現可怕的旋轉。我瞄準他們垂直放置。是否可以將預製件與表面垂直對齊?

目前我所知道的三種解決方案:

  1. 將使用Control +手動換擋然後在場景中的物體轉動他們入位置。
  2. 將像之前的場景中的對象,那麼一小段代碼添加到他們的每一個更新方法:transform.rotation = Quaternion.FromToRotation(transform.up, transform.position - origin) * transform.rotation;
  3. 像選項2,運行代碼並找到某種方式給世界狀態保存到現場,但that is easier said than done。對於那些應該是微不足道的東西似乎要付出很多努力。

第一個很繁瑣,很難正確對齊,第二個很容易,但是讓你的場景製作器不能代表你的最終遊戲,我不知道從哪裏開始第三個。有沒有更好的辦法?

+0

我也嘗試過頂點捕捉,但它並沒有垂直定向預製件。 –

+0

這裏似乎有兩個問題:(1)你如何定位垂直於表面的物體;(2)如何在編輯器中實現這一點,以便在已完成的情況下生成已保存的場景。是對的嗎?問題1或2給你更多麻煩? – rutter

+2

您可以嘗試將[ExecuteInEditMode]標頭添加到您的班級。這將使你的更新代碼在編輯模式下運行。另一種方法是創建一個編輯器腳本,但這是一個更多的工作 –

回答

0

最後,我決定使用Control + Shift手動執行所有方向。正如Johan建議你可以編寫自己的[ExecuteInEditMode]編輯器腳本,並且如果我正在樹林中的這個星球更大,我會查看它。

請注意,如果您確實冒充了腳本路徑,該對象不是浮動的並且完全在表面上剪輯。畢竟,手動放置可能是必要的。