來了各位,最複雜的單元來了
Vector在Roblox Studio中代表了一項向量,譬如一個箭頭指的方向,而Vector3就是透過三個位置來表達這個向量的一項數值,這項向量的起始點在**xyz(0, 0, 0)**的位置,而例如我們要表達一個物件的位置在Vector3(1, 2, 3)的位置,意思就等同於這個物件的x距離原點1、y距離原點2、z距離原點3 (這個單位是Roblox中一個1*1*1的Part的大小,簡稱1 stud)。
而在3D的世界中,x代表了此物件的左右向量、y代表了此物件的上下向量、z代表了此物件的前後向量(如果你玩過minecraft你應該不會不知道啦)
Vector3的使用方法,最簡單的方式就是直接使用new這項函式來定義一個新的Vector3數值,例如我想改變一個物件的位置
local Part = script.Parent
Part.Position = Vector3.new(1, 2, 3) --我們把這個物件的位置移動到了相對原點1, 2, 3距離的位置
CFrame的概念與Vector3相同,不過他比Vector3多了一個面朝位置,簡單來說,使用Vector3的時候你只能夠在函式裡面定義三個數字,但在CFrame中你可以放入兩項Vector3的數值,分別是位置以及面朝位置,當然,我們也是可以透過改變旋轉角度來改變他所面對的位置,但在不考慮更改旋轉角度的情況下這會是一個非常好用的方法。
CFrame的使用方法,也是一樣可以使用new這個函式來定義,例如我們可以直接定義一個物件的CFrame (對,他也是一個屬性)
local Part = script.Parent
Part.CFrame = CFrame.new(Vector3.new(1, 1, 4), Vector3.new(5, 1, 4)) --我們將這個物件的位置改變為Vector3(1, 1, 4),並讓他面對Vector3(5, 1, 4)
這麼臭的位置有存在的必要嗎? (惱)
出個題目考考大家,以下這張圖
設紅色Part的位置為Vector3(0, 0, 0)且地上的材質每一個都是1 stud,請問:
(1) 使用Vector3表達時,綠色Part的位置為何?
(2) 使用CFrame表達時,藍色Part的位置為何?
今天先講Position,明後天會繼續把Rotation跟Size講完 (先講不是因為我懶,是因為這個章節如果一次放太多真的會很難吸收,但這章節又是很重要的章節所以必須分開講,另外我目前正在準備apcs,搞得頭非常昏)