先說三角函數,雖然學過一兩學期,但紙上談的東西完全只能硬背過關,當初恨這個恨得要死。
但最近看了一系列的教學,才發現這是多麼可愛的東西!
想跳過數學可以下拉。
三角函數
先看sin 和 cos 波
光看這個還是不懂兩者的差別,以為只是差在一前一後。
但看完這個影片就開朗了
sin波可以當做y軸的變化,cos波可以當x軸的變化。
結合在一起就會變成:
程式碼:
z軸那個是我亂湊的,讓他斜斜的轉
再來是tan的用途
如果把上面的練習其中一軸改成tan(Time.fixedTime)的話,就會像這樣:
越接近0的時候變慢,之後越來越大,直到90度時消失,再從另一端出現。(旋轉狀況也是會突然急轉)
問了才知道tan是圓周上點(x,y)的斜率,其中xy是由cos 和sin得到。
拋物線斜率可以幹嘛? 做了拋物線才知道。
這是我學校專題,裡面有臺發球機,分別可以控制發球機位置、目標落點位置、發球高度高低。
順便要展示的是發球機自動旋轉的效果(搞了我很久)
。
發球機旋轉的物品有兩個,一個是底座(轉y軸)、一個是砲管(轉z軸)。
砲管只轉z軸,才不會跑出軌道,而軌道是底座旋轉去調整的。
目前雖然能動,但程式碼還不算整潔(可能有很多多餘的計算,還望各位挑出來
)
外殼旋轉:
兩個向量中間夾角越小,cross得到的值越小,也就是旋轉會越接近目標慢下來,用cross可以取得很像lerp過的旋轉效果。
因為cross只能到180度,所以再用個sign去讓殼旋轉,使目標在自己前方180度內。
炮管的原理也差不多,只是要先計算拋物線的最高點在哪裡。
這時候就用到tan了,越接近90度的坡道斜率就越大,tan的值也越大,球就可以飛越高。
(tan在90度時候不存在,會得到NaN的錯誤訊息)
(參考就好,在某些角度會出現砲塔卡住的現象,雖然動一動就又會好了。)
另外一點要注意的是,使用sin和cos或tan這種方法,建議先把角度轉成弧度。弧度的定義是:
當 半徑長=圓弧長時,該角度稱為1弧度。
若用角度制,同個角度,半徑越大圓弧長就越大,而弧度有點像把角度正規化的結果,讓整個圓的弧長固定在2pi。
到這裡可能還搞不懂數學家是不是吃飽太閒又再創一個單位?!
看了這影片才知道,若用角度制的話,可以想像假設sin跑完一個週期要跑360天,但若用弧度則只需2pi天,可以說角度制每天跑的量少 (斜率小)。
最後,最重要得拋物線程式碼(太長,有東西沒入截圖)
上面講的落落長是我回去補充initialVelocity前的那些國中數學的筆記
,但最關鍵的initialVelocity 那行公式我還不太懂。
以上。
因為VR不能像PC遊戲一樣有UI固定在畫面上,不把UI弄近一點就點不到,所以只好寫隻雷射筆,並再UI上用collider偵測碰撞。
變數宣告:
然後雜談:
專題2: 沙灘打水果 (看到中後面有彩蛋(?)
生日快到了,買個美光1TB SSD +個type c硬碟外接殼當隨身碟送我自己,第一次拿到赤裸裸的SSD。
第二個禮物是老師今天帶我去面試(for上學期實習課),對方也有意建立自己的VR部門,我進去的話可能可以變成VR部門的始祖(部門第一也是唯一的人)XD。
面試氣氛很free,對方也很好,加上"有機會" (有機會而已),能領正職薪水和績效獎金,至於是多少我就沒多問。
我能做的可能就AR/VR/網頁和其他雜事的支援,因為不是遊戲公司也不能妄想做PC遊戲。
一講到AI、大數據、即時分析什麼的就完全不行,是不是該學學Python了
總之我很高興,感謝一切機會。