[ Unity 2D ] 教學 #02 – 基本的移動

標籤: , ,

在Unity中,所有與位置、旋轉、縮放相關的功能都由Transform這個組件控制

transform這個屬性便是用來抓取遊戲物件(GameObject)上的Transform組件

以下是基本的移動方式

transform.Translate(Vector2.up);//向上移動
  • –名詞解釋–
  • transform 取得遊戲物件的Transform
  • Vector2 二維向量
  • Translate 平移

Vector2即為X與Y所組成的平面點資訊,在Unity2D中所有與位置有關的值都以Vector2儲存,如同數學中XY坐標軸的概念,在Vector2中自帶了許多預設的屬性,上方程式碼中的Vector2.up便是坐標軸(0,1)的意思,其他還有left(-1,0)、right(1,0)等屬性。

若要新增一個Vector2可以這樣寫

Vector2 vec2 = new Vector2(1,0);//x=1 , y=0

transform.Translate是最常用的移動方法,其參數意味著平移的方向,如程式碼中所寫的Vector.up物件會向上方移動1單位,當然若給予其他值物件就會往所給予的位置前進,例如想將物件移動(5,3)的距離,便可以寫:

transform.Translate(new Vector2(5,3));//往右移動5單位,往上移動3單位

實際撰寫後會發現物件是一瞬間就移動了,若要讓物件緩緩移動則需要加上Time.deltaTime

transform.Translate(new Vector2(5, 3) * Time.deltaTime);

Time.deltaTime是這次刷新與上次刷新之間的時間差,會因為使用者的電腦效能而有所不同,幾乎任何要計時的功能都會使用上Time.deltaTime

在此,可以將Vectory2(5,3) * Time.deltaTime看做是每秒移動(5,3)距離,事實上也是如此,Vectory2能夠進行加減乘除的運算,承上每次刷新的時間間隔,很自然的就會是每秒的時間差了。


接下來我們來實作一次,繼上一篇教學文中提到的Start,Update,print(“Hello World!”),來讓小飛兵不斷地向上移動。

首先新增一個名叫Move的C# Script,並雙擊打開他。

在Update內中撰寫上面的程式碼

void Update () { transform.Translate(Vector2.up * Time.deltaTime); }

按下Ctrl+S存檔後,將Move拖曳至小飛兵身上

執行!

小飛兵真的飛了!

本篇教學就到這裡,接下來請自行練習:

  1. 讓小飛兵往左飛
  2. 讓小飛兵往右飛
  3. 讓小飛兵飛的速度加快一倍
  4. 讓小飛兵斜著飛

[ Unity 2D ] 教學 #03 – 位置、旋轉、縮放



相關文章

教學 #16 – Sorting Layers(排序圖層) 這一篇是補充Layer篇忘記打的 在寫Layer跟Tag時大家應該都有看到Sorting Layers 這是在2D中用來劃分圖層順序的重要東西 由於Layer大多拿來做碰撞的...
遊戲程式入門 #03 印出訊息,Debug Log、print... 在先前的 #00 Unity腳本建立與HelloWorld! 中有提到 Debug.Log 這個函式,這是用來印出除錯訊息的功能 每個語言都會有類似的功能,用來幫助開發者在開發時進行除錯,或是...
教學 #11 – Tag(標籤) 在GameObject的屬性視窗中,可以看到上面有個「Tag」屬性,中文稱作為標籤 Tag屬性可以作為分類的用途,例如將食物分為飲料和餅乾等等,在Unity中也可以將物件用Tag分為各種不同的類...
教學 #14 – Scene(場景) Scene是個很重要的環節,在中文稱為「場景」 以比較直覺的方式來說明的話,Scene可以當作遊戲中的關卡,每一個關卡都是獨立的Scene 在Unity的工具列中,File下會看到...