之前說過每一個物件都會有transform元件,transform在面板上看起來很簡單,就是位置、旋轉、縮放,今天就來看看transform在腳本當中可以有什麼操作。
我們都知道物件是有嵌套關係的,也就是可以有父子關係,而GameObject當中卻沒有能夠修改這種父子關係的選項,這是不是就代表父子關係不可控制?其實不是,因為控制父子關係邏輯的功能在transform,而不是GameObject。
建立空腳本“TransformTest”和一對分別為父子關係的立方體、球體和圓柱體,並把腳本掛在球體上。
首先獲取球體的兩個位置,一個是世界絕對位置,一個是作為子物件的相對位置。補充一點,當用戶拖動父物件時,即便子物件移動,右邊的“位置”並不會有所改變,這是因為此時的子物件的位置用的是相對父物件的位置。
接下來獲取旋轉,旋轉也可以獲得本地和世界旋轉,看到裡面填的變數是四元數,也就是前幾天學的,補充一點,上面的位置都是Vector3。如果看不懂四元數的話也可以轉換成歐拉角。
接下看獲取向量,向量比較特殊需要額外補充,它的前方是Z軸,右邊是X軸,上方是Y軸,這遵從了左手定則。而每次旋轉物件之後,它的前方都有可能改變,不過獲得它的三個向量反而很簡單。
接下來學習一些比較實用的程式碼,我們知道Update()是時刻更新的,我們就可以用這個特性配合上面的知識做到讓物件一直看向一個地方,這樣無論怎麼拖動當前物件,它的面朝方向都不會變。
甚至我們可以讓物件圍繞某一軸時刻旋轉,每一幀旋轉2度,這樣就可以達成一些遊背景的星球自轉圖。
也可以繞著某一物體旋轉,搭乘晝夜交替的感覺。
接下來提到一個觀念:虛擬軸,什麼是虛擬軸呢?簡單來說,虛擬軸就是一個數值在 -1~1 內的數軸,這個數軸上重要的數值就是 -1、0 和 1。當使用按鍵模擬一個完整的虛擬軸時需要用到兩個按鍵,即將按鍵 1 設置為負軸按鍵,按鍵 2 設置為正軸按鍵。
在沒有按下任何按鍵的時候,虛擬軸的數值為 0;在按下按鍵 1 的時候,虛擬軸的數值會從 0~-1 進行過渡;在按下按鍵 2 的時候,虛擬軸的數值會從 0~1 進行過渡。
在“編輯”找到“專案設置”,可以看到“輸入管理器”,這個就是我們設定虛擬軸用的,可以自定義虛擬軸。
隨便點一個軸都可以看到顯示很多資訊,這些按鈕對應的案件也都是可以自定義的。