1. 程式人生 > >【unity3D】【siki的坦克大戰】 【學習記錄(一)】 【01-07】

【unity3D】【siki的坦克大戰】 【學習記錄(一)】 【01-07】

理解前後方代表Z軸,上下方代表Y軸,左右方代表X軸

1.FixedUpdate()與Update()的區別

Update() 和 FixedUpdate()在遊戲中都會在更新的時候自動迴圈呼叫。

但是Update是在每次渲染新的一幀的時候才會呼叫,也就是說,這個函式的更新頻率和裝置的效能有關以及被渲染的物體(可以認為是三角形的數量)。在效能好的機器上可能fps 30,差的可能小些。這會導致同一個遊戲在不同的機器上效果不一致,有的快有的慢。因為Update的執行間隔不一樣了。

FixedUpdate,是在固定的時間間隔執行,不受遊戲幀率的影響。有點想Tick。所以處理Rigidbody的時候最好用FixedUpdate。

一般處理物體物理移動的時候用FixedUpdate()

2.Input.GetAxis()

如Vertical在預設情況下是↑ ↓鍵位,Horizontal是←→鍵位,用來確定移動方向

獲得的只是一個float,值為1,0或者-1。

使用這個函式的好處是不用在程式碼寫得很冗長,直接在Edit->Project Setting->Input中即可設定預設鍵位

最後需要在剛體元件中設定position的平面和rortation的軸

例如float h=Input.GetAxis("Horzontal");

Rigibody.velocity=transform.forward*h*speed;

此例中Horzontal預設代表←→鍵位,velocity是速度的意思

forward為前方,在U3D中代表Z軸,實現了上下控制的作用,至於是旋轉或者移動,則要看設定的軸了

3.Rigidbody.velocity和Rigidbody.angularVelocity

剛體速度和剛體的旋轉角速度(度數的角)

4.世界座標系和物體座標系

Vector3.forward 與 transform.forward

5.定位位置的方法有

子類物體類似於父類物體的元件,可以通過Find查詢

private TransForm  position;

position=transform.Find(" ")

6.例項化某物體

public GameObject xxx;  //並在指令碼掛載的物體上找到函式並賦值

GameObject.Instantitate(物體,物體位置.position,物體位置.roration)    

7.如何獲得例項化物體

例如:

GameObject go = GameObject.Instantitate(a,a.position.a.roration) as GameObject;

go.Getcomponent<Rigidbody>().velocity=go.position.forward*speed;

這段程式碼就是獲得例項化物體,並獲取他的剛體元件,然後賦予forward方向的速度