天天看點

unity快捷放置物體操作

https://connect.unity.com/p/zui-jia-shi-jian-dui-xiang-fang-zhi-he-wu-li-xiao-guo 最佳實踐系列文章将探讨我們在與客戶合作時遇到的一些常見的問題。這些都是我們的合作團隊辛苦得出的經驗和教訓,我們很自豪能夠和大家分享他們的智慧。我們已經為大家分享過以下内容:   《影子戰術》層級優化經驗分享   最佳實踐 | 碰撞性能優化   最佳實踐 | Unity項目設定    

unity快捷放置物體操作

  這其中的很多問題隻有在真正制作主機遊戲、手機遊戲、或者處理巨量遊戲内容時才會出現。如果能在開發早期就将這些問題考慮進去,那麼開發過程就會更輕松,而遊戲也會更炫酷。   将對象放置到理想位置   盡管擺放對象是在Unity中最為常見的任務之一,我們還是看到不少團隊為了如何能更好地完成這項工作而苦惱。要把對象排列完美,不讓角色跑出世界,不讓尋路出現障礙,并讓各個實體對象能夠放置在理想的位置,這的确不是件輕松的事。    

unity快捷放置物體操作

  Unity提供了一些工具來友善處理這個問題,這些工具各自扮演着不同的角色。尤其是在我們想要制作大量重複使用的内容,或是制作一張放置了大量動态實體對象的場景,了解這些工具的使用方法則尤為重要。   使用正确的輔助工具   Unity中提供了變換、旋轉和縮放工具,在Unity 2017.3中還加入了能同時擁有這三個功能的通用工具。這些小工具能在3D環境下修改遊戲對象的變換屬性。除此之外,還有2D環境下處理對象的矩形變換工具(Rect Transform)。   所有這些輔助工具的運作方式都與其所處的工作模式直接相關。如果将模式設為中心(Center),輔助工具将使用根據對象邊界計算得出的對象中心點。這個計算結果是個近似值,是以在處理複雜對象時或許會感覺該中心點偏移了真正的中心點。   如果将輔助工具模式設為軸心(Pivot),輔助工具将使用對象自身引用框的原點(0,0,0)。這個軸心點是由建立該資源的作者在制作時設定的。通常需要将對象按照彼此相對的位置進行擺放時,我們推薦使用軸心模式,而且在制作資源時要留意軸心點的位置。   第二個切換按鈕,全局/局部(Global / Local)切換按鈕,确定了操作對象時所處的空間。設為全局(Global)意味着輔助工具将會對齊世界(x,y,z)坐标軸,而設為局部(Local)将會對齊對象自身的(x,y,z)坐标軸。通常我們需要在局部空間下處理對象。但如果我們想要讓多個對象互相對齊,則會切換到全局坐标系,并使用網格對齊工具來排列對象。   吸附對象   在Unity中,最為直接的定位工具是按下CTRL鍵(Windows系統)或是Command鍵(OSX系統)來吸附網格。在我們通過坐标軸搖桿(也就是分别為藍、紅、綠的坐标軸輔助工具)來移動對象時,按下吸附鍵會讓對象根據目前網格大小計算的增量而移動,這個增量可以自行修改。    

unity快捷放置物體操作

  自動吸附設定(Snap Settings)菜單能為網格大小設定每個軸的數值,讓我們控制旋轉角度和縮放大小的吸附,還能将所選對象的目前變換屬性近似取其最近的網格線。   吸附所有坐标軸(Snap All Axes)按鈕在排列任意對象時十分有用。我們可以選擇一組對象,将它們在坐标軸上吸附到網格,然後重新定位,這樣就能把他們排列好了。效果如下圖所示:    

unity快捷放置物體操作

  這個方法在處理規則幾何體、大型關卡布局和設定碰撞塊時十分管用。如果我們需要處理更為複雜的放置情況,則需要下面這些工具。   頂點吸附   在使用變換工具時按住V,變換輔助工具會切換為頂點吸附模式,顯示為一個小方框。然後點選所選對象網格上的一個頂點,将其拖到光标下的任意頂點上。在處理任意網格的對齊時,尤其是要處理那些複雜的或是不存在碰撞的網格對齊時,這個方法很實用。    

unity快捷放置物體操作

  在上圖中,不管是電線還是台燈都沒有緊湊的碰撞網格,而且它們也都不是規則的立方體,是以它們不能用網格吸附或碰撞吸附處理。   如果需要這樣放置多個遊戲對象,我們也可以将頂點吸附模式保持在打開狀态。按下Ctrl+Shift+V打開,按下Ctrl+V關閉。這樣便不需要一直按住V就能頂點吸附多個對象了。   碰撞吸附   按下CTRL + SHIFT可以啟用碰撞吸附。啟用後,必須拖拽變換輔助工具中心的黃色小方框,而不是使用坐标軸控制工具。這樣會讓所選對象與光标下對象的碰撞體相對齊。    

unity快捷放置物體操作

  用頂點吸附或網格吸附來對齊網格在處理靜态幾何體時十分出色,但如果要處理動态對象,比如說互相穿透并在觸碰後發射到空中的對象時,應該吸附到碰撞體而不是可見網格。   碰撞安置   如果有大量動态實體對象,或是十分複雜的關節系統,利用碰撞吸附來放置對象也許就不太合适。幸運的是,現在Unity編輯器中可以運作PhysX。它能模拟幾秒的遊戲時間,完成實體效果,然後儲存完成時對象的位置資訊。    

unity快捷放置物體操作

  下方是示例代碼,代碼中不僅有大量注釋,還包含了調試資訊繪制和一個菜單項。隻要将其放入項目中的任何一個Editor檔案夾裡,便能看到一個新的GameMenu->Settle Physics菜單項。   示例代碼:PhysicsSettler.cs   using UnityEngine; using UnityEditor; [InitializeOnLoad] class PhysicsSettler { static bool registered = false; static bool active = false; static Rigidbody[] workList; static bool cachedAutoSimulation; const float timeToSettle =   當了解了何時和為何使用網格、頂點吸附、碰撞吸附時,我們将在關卡設計工作流程獲得更好的開發體驗。推薦開發者們多多嘗試這些工具,例如:對比軸心(Pivot)和中心(Center)模式的差別,或是比較全局(Global)和局部(Local)模式的不同,這樣就可以知道什麼模式更為适合。花費在布置虛拟對象的時間越少,那麼在開發時得到的樂趣就越多。

轉載于:https://www.cnblogs.com/xiaoahui/p/10995627.html

繼續閱讀