創作內容

4 GP

Unity開發者工具初學筆記2-2——繪製座標網格與極座標校正方法

作者:pudding│2020-06-19 01:46:57│巴幣:8│人氣:815
哈囉~由於還沒學會怎麼數3的關係,這次的標題就打成了2-2 (X

沒有啦W,這次要跟各位分享的,是接續上回的筆記,在上次的筆記中我們做了一個簡單的位置校正工具,而這回我們要做的則是幫那個工具繪製出它需要的網格,以及看看如何幫極座標進行位置校正。


(預計繪製出來的效果)

那就讓我們開始吧,先從笛卡爾座標(方形)的部分看。
先前的程式碼是繼承自EditorWindow,而這個類別主要是用來繪製視窗中的元素(如變數的欄位),如果要能夠像之前的Gizmo或Handles一樣直接繪製在遊戲場景中的話,我們就會需要向SceneView註冊事件(有點像是要場景顯示器在每次更新的時候來通知你,而你會依照場景顯示器給的資訊來做動作)。

注意:記得要在關閉(OnDisable/Destroy)時去撤銷原本註冊的事件,否則你之後會很難再去處理該事件 (雖然整個程式關閉就沒了)
注意2:我這邊是寫onSceneGUIDelegate,但是如果你用的Unity2019的版本的話,它現在已經改成了DuringSceneGui
(記得這裡事件的函式要帶入規定的參數)

說完基本的部分後就來看怎麼繪製網格吧。
(這邊特別加了一行Handles.zTest...,這一段是設定說Handles要繪製的東西符合某條件的時候才去繪製,而zTest則是深度檢測,離鏡頭越近的東西數值越小,越遠則越大)


這邊先為了方便,我們就只先繪製出原點(座標0,0,0)周遭各延伸距離16的網格,讓我們看一下編輯器那邊的效果。


讀者:等等,這張截圖……

好啦XD讓我再重新弄一張圖。

這時候你可能會想問說要怎樣繪製出類似Unity編輯器預設的全圖網格?

這個嘛,最簡單的方式就是直接把剛才繪製的範圍寫到很大,但是那樣子對電腦負擔會比較重(應該啦),畢竟你會要求Handles去繪製一堆不在畫面內東西,而要比較嚴格限制繪製範圍在視線中的方法有些繁瑣,我就先留到後面再提,這裡我們先接著看極座標的部分。

極座標的位置校正

這裡我打算回去改寫先前的SnapSelections函式。
(我必須承認這一段跟開發者工具已經有點沒有關係了XD只是單純的在算數學)


這邊讓我們改成自己去取出所有選取的遊戲物件並一一校正,未必需要這麼做,只是極座標的校正點算起來比較繁雜,所以我想說拆開來比較好,接著讓我們接著看到GetSnappedPos的部分。

(極座標的校正點取得法)

(極座標的網格繪製方法)

寫完功能後記得前面那裡要去呼叫

(具體效果)


如何繪製全圖的網格?

這部分有點麻煩,而且寫完後會覺得有點沒必要QwQ (<-而且拉遠的時候看起來超亂
首先我先去寫了另一種笛卡爾座標的網格繪製函式


接著我們要想辦法去取得這個範圍 (最大和最小的XY值),為此我們會需要用到投影的方法

試著去算出Camera的邊角看向平面(y=0)時會形成的範圍,為此我們前面呼叫時會需要宣告一個邏輯上的平面。

接著再去計算Camera的每個角落看出去的向量(這裡用Ray來算)

(下面三個基本上都是一樣的邏輯,所以我就先合起來了)
利用Plane.Raycast的方式檢測說射線會不會跟它有所交集,有的話就將交集點拿去計算說是否為該範圍內的最大或最小值。

(用來取向量中最大或最小的函式)

寫完後應該就能看到先前的效果


好啦,那這次的筆記分享就先寫到這裡了,什麼? 你問我要怎麼繪製極座標的全圖網格呢?
恩……我還沒想到XD,不過我應該暫時沒有要繼續研究那一部分,之後有想法的話我再寫寫看吧,希望各位喜歡這次的筆記分享!

……話說按照這次標題命名來看的話,下次的筆記分享應該就會是 "初學筆記:艾力克斯" (<-不要瞎掰好嗎
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4821213
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 1 篇留言

樂小呈
好複雜 [e15]

06-21 21:38

pudding
唉! 可能有一點QwQ 其中一些部份我之後再講詳細一點好了,像是ZTest那一段我好像就講太簡略07-05 16:41
我要留言提醒:您尚未登入,請先登入再留言

4喜歡★pudding70119 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Unity開發者工具初學... 後一篇:在Unity當中製作《底...

追蹤私訊切換新版閱覽

作品資料夾

Niwaiwaiwai大家
小屋更新了插畫喔,這次是可愛的妹妹看更多我要大聲說昨天16:54


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】