在Day 12有提到關於CFrame的旋轉角度的問題,今天我們來細部的講解他的各項方法
來看以下的程式碼
local Part = script.Parent
Part.CFrame = CFrame.Angles(0, 90, 0)
Part.CFrame = CFrame.Angles(0, math.deg(90), 0)
Part.CFrame = CFrame.Angles(0, math.rad(90), 0)
這三個指令所展現的結果都不一樣,但明明都是給數值90,為什麼會不一樣呢?
這就要扯到數學上的弧度與角度的關係,在數學中,角度的表示方式有度數與弧度,其中,度數就是我們用量角器量出來的數值,而弧度則是將角度先以一個圓形內所切的扇形來看,假設我們在圓內切了一個扇形,其角度為30度,則他的弧度就會是 此扇形的弧長 / 此扇形的半徑 (S/r)
再來就是該如何將角度換算成弧度,在Day 12的時候我有提供兩個公式:
rad = math.pi/180 * deg
deg = 180/math.pi * rad
那這邊的兀 (這是中文字的ㄨˋ,但我找不到pi的符號所以先這樣代替) 指的並不是我們國小學的3.14159那串,這邊指的是兀弳,弳是弧度的單位,像角度的表示就如同90度,弳就相當於90弳,但要注意換算,90度不會等於90弳
好的,說了這麼多數學理論,那現在來解釋為何這三項會不一樣,首先我們要了解到,電腦是無法將度數與其他數字做計算的,因為度數的單位與一般常數並不相通,但弳度 (弧度)就可以,因為弳度是可以與其他數字做交換計算的,例如你無法將90度加上1,但弳度可以,所以在CFrame.Angles這項函式裡面,對於數值的預設單位就會是弳度,而要將角度轉換為弳度,就要使用math.rad函式,所以邏輯上就是用math.rad將90度換算成弳,再將換算數值給予Angles函式。