在Unity中使用貝塞爾曲線(轉)


鼎鼎大名的貝塞爾曲線相信大家都耳熟能詳。這兩天因為工作的原因需要將貝塞爾曲線加在工程中,那么MOMO迅速的研究了一下成果就分享給大家了哦。貝塞爾曲線的原理是由兩個點構成的任意角度的曲線,這兩個點一個是起點,一個是終點。在這條曲線之上還會有兩個可以任意移動的點來控制貝塞爾曲線的角度。如下圖所示,點1 和點4 就是起點和終點,點2 和點3 就是控制曲線角度的兩個動態點。

 

NGUI研究院之在Unity中使用貝塞爾曲線(六) - 雨松MOMO程序研究院 - 1

 

如下圖所示。使用拖動條來讓曲線發生旋轉,大家會看的更加清晰。目前我們看到的被塞爾曲線是在平面中完成的,其實貝塞爾曲線是完全 支持3D中完成,這里是為了讓大家看的更加清楚MOMO將忽略Z曲線的Z軸。UnityAPI文檔中有貝塞爾曲線的方法,可是只支持編輯器中使用,也就是 說無法在程序中使用。那么本篇文章我們利用貝塞爾曲線的數學原理以及LineRenderer組件來完成在Unity中使用貝塞爾曲線。

 

NGUI研究院之在Unity中使用貝塞爾曲線(六) - 雨松MOMO程序研究院 - 2

 

創建一個U3D的工程,創建一個新游戲對象,綁定LineRenderer組件。

Bezier.cs 這里是貝塞爾曲線的公式C#版本

 

 

MyBezier.cs 把它直接掛在攝像機上 ,控制拖動條來控制貝塞爾曲線、

 

OK 這里貝塞爾曲線的原理就已經完畢。下面我們學習在NGUI中如何使用貝塞爾曲線。剛剛我們說過貝塞爾曲線是由2個固定點 加兩個動態點來完成的,其實我們在開發中往往只需要3個點。1 起點 2 中間點 3 結束點 拖動這三個點都可以重新計算曲線的軌跡這樣才比較完美。如下圖所示,這三個點都是可以任意拖動的,拖動結束后,黑色的線為用戶拖拽點連接的直角線段,我們 根據這三個點組成的直角線段計算它們之間的貝塞爾曲線,也就是圖中黃色的線段。

 

NGUI研究院之在Unity中使用貝塞爾曲線(六) - 雨松MOMO程序研究院 - 3

 

簡單的進行拖拽一下,是不是感覺貝塞爾曲線很酷炫呢?哇咔咔。

 

NGUI研究院之在Unity中使用貝塞爾曲線(六) - 雨松MOMO程序研究院 - 4

 

我們來看看代碼實現的部分,其實原理和上面完全一樣。

BallMove.cs綁定在這三個可以拖拽的點上,讓拖動小球后小球可跟隨手指移動。

 

如此一來觸摸小球后,小球將跟隨用戶手指移動。下面我們將監聽用戶觸摸小球后的坐標來計算它們三點之間的貝塞爾曲線。

BallInit.cs掛在攝像機上

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM