91久久九色_99精品在线免费_91精品欧美一区二区三区_成人一级毛片_国产精品久久久久免费视频_99精彩视频在线观看

【Unity開發】實現帶均勻描邊的雷達圖

2021-03-30
5928
0

雷達圖是游戲中常見的圖表表現之一,比如用來呈現英雄的屬性等等,本文將在 Unity 中實現一個帶均勻描邊可響應點擊的雷達圖。

Graphic類

Unity 的原生 UI 系統 UGUI 提供了名為 Graphic 的基類用于實現各自 UI組件的。該類中有名為 OnPopulateMesh 的方法,只要向參數 VertexHelper 傳遞正確的頂點數組與下標數組,即可構造出我們期望的網格。

網格的構建

雷達圖可視為一個正多邊形,每個頂點沿徑向縮放得到。因此,我們只需要遍歷每個角度,并根據當前角度的權重計算出相應的頂點。最后,我們可以構造下標數組來獲得所需的網格。構造頂點代碼如下

這樣對于邊數為 N 的雷達圖,我們會得到包括中心點在內的 N 1 個頂點,然后是構造下標數組,代碼如下。

這只是一個簡單的方法,結合兩個相鄰的頂點與中心點形成一個三角形。注意,第一個頂點在這里被重用。

響應點擊

 

Unity 的 UI 組件,響應點擊需要實現接口 ICanvasRaycastFilter 的 IsRaycastLocationValid 方法。如果命中多邊形,也就是點擊坐標落在多邊形內,則返回 true ,否則返回 false。首先需要將方法參數里的屏幕坐標轉換到ui的局部坐標。

然后我們檢測坐標是否落在多邊形中。對于我們單擊的坐標,我們檢測到一條指向多邊形外部頂點的光線從它發出。對于多邊形的每一條邊,我們檢測它是否相交。最后,我們計算相交邊的數量。如果是奇數,則表示該點落在多邊形中,否則落在多邊形外。有關詳細信息,請參閱以下問題。

如何判斷一個點是在一個有自交線的封閉圖的內部還是外部?

代碼如下

做完這些就實現了一個可響應點擊的雷達圖了。

描邊

一開始覺得這就不算個問題,搞兩個權重一樣但是半徑不一樣的雷達圖不就能實現了嘛。試了試發現,問題沒有這么簡單。

 

 

因為權重不均勻,所以會導致描邊也不均勻,為了實現均勻的描邊,還需要額外的工作。

解決辦法是額外進行邊的繪制。對于多邊形的每一個頂點 C ,我們按逆時針方向找出它的上一個 A 與下一個頂點 B ,并且得到它相鄰的兩條邊的向外的垂線,把 A 與 B 沿著垂線向外延伸得到 E 與 F,把 E 與 F 沿著邊的方向延伸,相交于點 P,對每個頂點重復上述步驟,就能得到外框的所有點了。

頂點構造代碼

下標數組構造

獲得交點

獲得垂線

最后看效果

結論:

   網上 Unity 實現 雷達圖的代碼能找到不少,但是我發現基本都止步于網格的構造,并沒有將點擊響應的計算以及均勻描邊的實現,有的更過分,甚至連 uv 都不肯算,沒辦法只能自己擼一個,把一些中學幾何的東西又撿起來過了一遍,總的來說,這個過程還是有所收獲的。

 

轉載聲明:本文來源于網絡,不作任何商業用途。

免責聲明:本文內部分內容來自網絡,所涉繪畫作品及文字版權與著作權歸原作者,若有侵權或異議請聯系我們處理。
收藏

全部評論

您還沒登錄

暫無留言,趕緊搶占沙發
繪學霸是國內專業的CG數字藝術設計線上線下學習平臺,在繪學霸有2D繪畫、3D模型、影視后期、動畫、特效等數字藝術培訓課程,也有學習資源下載,還有行業社區交流。學習、交流,來繪學霸就對了。
繪學霸iOS端二維碼

IOS下載

繪學霸安卓端二維碼

安卓下載

繪學霸微信小程序二維碼

小程序

版權聲明
本網站所有產品設計、功能及展示形式,均已受版權或產權保護,任何公司及個人不得以任何方式復制部分或全部,違者將依法追究責任,特此聲明。
熱線電話
18026259035
咨詢時間:9:00~21:00
在線客服
聯系網站客服
客服微信:18026259035
公司地址
中國·廣州
廣州市海珠區曉港中馬路130號之19
繪學霸客戶端(權限暫無,用于CG資源與教程交流分享)
開發者:廣州王氏軟件科技有限公司 | 應用版本:Android:6.0,IOS:5.1 | App隱私政策> | 應用權限 | 更新時間:2020.1.6
主站蜘蛛池模板: 国产精品二区在线 | 在线视频日韩精品 | 九九视频网站 | 久久久久久久久国产 | 日本福利一区二区三区 | 999一区二区三区 | 国产一区二区视频在线 | 国产精品久久久久久久久久久免费看 | 日本一极黄色片 | 嫩草影院在线观看91麻豆 | 男女污污的视频 | 久久久三级 | 99国产精品电影 | 欧美亚洲在线 | 亚洲一级在线 | 午夜国产福利 | 一区二区三区四区在线 | 免费国产视频 | 国产一区二区三级 | 九九久久99| 久久精品99国产精品酒店日本 | 日本午夜视频 | 超碰2021| 中文字幕在线国产 | 性欧美xxxx| 久久午夜电影 | 色先锋影院| 69视频在线免费观看 | 精品播放 | 国产区在线看 | h片在线观看视频免费免费 日韩国产一区二区 | 国产成人综合在线 | 日韩影视在线 | 九九人人 | www免费 | 在线3p| 久久久久国产精品午夜一区 | 国产一区二区视频在线 | av午夜 | 亚洲精品美女久久久久网站 | 久久免费精彩视频 |