【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方向的速度