需要說明的是:unity場景中任何乙個遊戲物件都會有乙個transform元件,是用來記錄遊戲物件的空間節點的狀態,它包括位置(postion),旋轉(rotate),縮放(scale)。這裡我們所說的物體的移動,其實就是改變position的值。
1.1直接給position賦值,也就是說給position乙個新的值,讓遊戲一執行,遊戲物件的位置就會變為新給它的這個值。
//將遊戲物件的位置改為三維空間中的(1,1,1)的點
transform.position = new vector3(1, 1, 1);
1.2利用transform類提供的translate方法移動物體,這個方法是針對已知方向的移動的遊戲物件。
//遊戲物件繞z軸旋轉
transform.translate(transform.forward);
vector3既可以表示乙個三維空間座標系的點,也可以表示乙個向量。
2.1vector3.lerp,vector3.slerp,vector3.movetowards
這三個方法都是插值方法,vector3.lerp為線性插值,vector3.slerp為球形插值,vector3.movetowards為線性插值,增加了最大速度的功能。當需要遊戲物件從a點移動到b點就可以使用這些方法。
//物件從a點移動到b點
transform.position = vector3.lerp(a, b, time);
transform.position = vector3.slerp(a, b, time);
transform.position = vector3.movetowards(a, b,maxdistancedelta);
2.2 vector3.smoothdamp()
這個方法是可以平滑的從點a逐漸移動到b點,還可以控制移動的速度,常用於相機的跟隨。
rigidbody元件是用於模擬物體的物理狀態的,包括重力,摩擦力,速度等等。
3.1 rigidbody.velocity
給剛體乙個速度,能讓物體運動,並且忽略靜摩擦力,這能讓物體很快的從靜止狀態運動起來。
//給遊戲物件向正前方的乙個速度
getcomponent().velocity = transform.forward;
3.2rigidbody.addforce
給剛體乙個方向的力,可以模擬物體在外力作用下物理狀態的改變。
getcomponent().addforce(transform.forward);
3.3 rigidbody.moveposition
剛體受到物理的約束,移動到指定的點
getcomponent().moveposition(transform.position);
charactercontroller用於控制第一人稱或第三人稱角色的運動,使用這種方式可以模擬人的一些行為,比如限制角色爬坡的最大斜度,步伐的高度等。
4.1 charactercontroller.******move
用於模擬簡單運動,並且自動應用重力,返回值表示角色當前是否著地。
4.2 charactercontroller.move
模擬更複雜的運動,重力需要通過**實現,返回值表示角色與周圍的碰撞資訊。
unity遊戲開發入門 物體的移動
1.通過transform元件直接移動物體 transform 元件用於描述物體在空間中的狀態,它包括 位置 position 旋轉 rotation 和 縮放 scale 其實所有的移動都會導致position的改變,這裡所說的通過transform元件來移動物體,指的是直接操作transform...
Unity中的物體移動
1 直接改變物體的位置。例子 transform.position transform.position 某一三維向量 vector3 2 public void translate vector3 translation 物體在對應的座標系中,向引數的方向移動,每一幀移動引數大小 引數 trans...
Unity賽車遊戲之移動
這個賽車遊戲真是讓我費勁腦汁啊。尤其是寫這種系統化的東西。目前漂移還沒找到更好的演算法,不過基本的移動還是可以做到的。別看就光是個移動,其實也是很費事的。unity給了個對於賽車系統很好的碰撞元件wheelcollider.把這個給四個輪子一套就好了,這個元件能調節一些汽車的相關引數,神馬懸掛系統,...