1. 先開啟Unity,然後在上方list中選GameObject > Create Other > Cube
Cube是一個正方體,你也可選擇創建Sphere(球體)等物件,隨你喜歡
2. 接著選取Assets>create>javascript,創建一個javaScript的腳本
3. 在Project介面中,你會看到剛才創建了一個未命名的script,先重新命名,如改成"Move3D"。
4. double click這個script,然後它會自動開啟UnityScript的編輯器。
在新的Script中,你會看到以下程式碼:
#pragma strict
function Start () {
}
function update(){
}
你目前還不用理解第一行: #pragma strict 到底替你做了什麼,你只需要大概知道,前置處理器替你作了一些事情,而這些事情對程式運行有幫助。
新創建的Script預設只有兩個function,start()和update(),在start(){}中的腳本會在物件完成載入後立刻被呼叫,換言之,它通常用於初始化設定,例如物件的起始坐標位置。
例如,我們可以寫:
function Start () {
transform.position.x = 0;
transform.position.y = 0;
transform.position.z = 0;
}
寫完儲存後,把script拖到你剛才創建的物件,播放程序,以上程式便會把物件的初始坐標設為(0,0,0)。
在 此範例中,transform是你指定的物件的一個Component。Transform類別是unity任何object的基本元素,它指向物件的坐 標,位置,大小等資訊。而它的Position成員,實際上是一個三維向量(Vector3)類別。你除了可以在script中初始化物件的坐標,也可選 擇直接在以下介面中輸入物件的Transform初始值。
然而,若我們要旋轉或移動物件,該如何作呢?
施轉(Rotate)
通常我們不會一次過旋轉物件,而是慢慢地旋轉,所以我們要在update() function中撰寫script
同樣的,我們利用transform指向目前的物件,然後呼叫Rotate方法。
function update(){
// 每一秒大概旋轉3度
transform.Rotate(0,
3*Time.deltaTime, 0);
}
Time.deltaTime 傳回對上一次執行update()直至現在所經過的時間。這個數值非常重要,因為它可以確保在不同效能的電腦上,物件旋轉的頻率不會有太大差異。(如果你 曾經寫過ActionScript,你應該馬上想起onEnterFrame,每播放一影格,便會執行onEnterFrame指定的函數,但這種做法的 最大缺點是,在不同電腦上可能會有截然不同的動畫效果。比較之下,在Unity中Time.deltaTime解決了這個問題。)
移動
一般而言,移動物件有兩種方法,最傳統的方法是加減物件的坐標值,例如要一物件每秒向右移動10個單位,做法便是:
function update(){
transform.position.x +=
10*Time.deltaTime;
}
這種做法在建立2D遊戲上是非常方便的,但是用來建立3D遊戲卻非常麻煩,在Unity中,你被鼓勵用向量(Vector)類別來移動物件。在向量類別中,你可以直觀地移動3D物件,而且還可以簡單地合併,旋轉向量。
// 首先建立一個三維向量物件
private
var vector:Vector3 = Vector3(1,1,1);
function update(){
// 每秒移動50單位向量
transform.position +=
50*vector*Time.deltaTime;
}
以上的程式,就相當於
function update(){
transform.position.z +=
50*Time.deltaTime;
transform.position.y
+= 50*Time.deltaTime;
transform.position.x +=
50*Time.deltaTime;
}
顯然而見,在Unity中,學會向量操作是非常重要的。
參考文件:
Life_programmer

沒有留言:
張貼留言