Unity 之遊戲物體的移動篇

2021-09-19 07:58:14 字數 1692 閱讀 4480

需要說明的是: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.把這個給四個輪子一套就好了,這個元件能調節一些汽車的相關引數,神馬懸掛系統,...