unity移動物件的方式彙總

2021-09-26 03:07:43 字數 1487 閱讀 6949

1 transform.position+ = vector3.forward*time.deltatime;

transform.translate(vector3.forwardtime.deltatime); //固定方向移動

transform.translate(vector3.forwardtime.deltatime,space.type); //固定方向移動,參照座標系

transform.translate(0,time.deltatime,0,space.type); //三維空間移動

transform.translate(0,time.deltatime,0,camera.main.transform); //三維空間移動,相對某個參照系移動,若相對參照系為null則預設參照世界座標系

世界座標系

2.1 transform.translate(new vector3(0,0,1)*time.dealttime,space.world);

自身座標系

2.2 transform.translate(new vector3(0,0,1)*time.deltatime,space.self);

3.1 vector3.lerp(startpos,endpos,t); //其中t為插值【0-1】0時在startpos,1時在endpos

3.2 vector3.slerp(startpos,endpos,t); //球形插值,需要同時求圓心位置,和向量來確定移動路徑

vector3 center = (startpos - endpos)*0.5f;

center -= new vector3(x,y,z); //這裡x,y,z 移動圓心位置,當x,y,z均為0時,圓弧為半圓,且弧線方向為xz面

var startvec = startpos - center;

var endvec = endpos - center;

transform.position = vector3.slerp(startvec,endvec,t) //t為插值【0-1】,同線性插值

transform.position +=center;

3.3 vector3.movetowards(startvec,endvec,t) //同線性插值,增加了限速

3.4 vector3.smoothdamp(transformpos,targetpos,ref vector3.zero,smoothtime); //線性移動,越靠近目標位置速度越小,適合相機跟隨。

4.1 rigbody.velocity

4.2 rigbody.addforce(vector3 direction);

4.3 rigbody.moveposition()

5.1 charactercontroller.******move(); //可模擬簡單運動。並自動適應重力,返回值表示當前角色是否著地

5.2 charactercontroller.move(); //更複雜的運動

Unity中物體的移動方式

關於unity中控制物體移動的方式,大致可以分為兩類 一類是利用transform來實現移動,一類是利用rigidbody來實現移動。這是我自己常用的兩類。1 transform控制物體移動的實現方式 transform.transla dir time.deltatime speed dir是要移...

unity的三種移動方式

第一種移動方式 首先在方法外宣告剛體 private rigidbody body 為了明顯,可定義乙個速度 public float speed void start void update if input.getkey keycode.s if input.getkey keycode.a i...

Unity 物體移動的三種方式

在unity3d中,有多種方式可以改變物體的座標,實現移動的目的,其本質是每幀修改物體的position。通過transform元件移動物體 transform 元件用於描述物體在空間中的狀態,它包括 位置 position 旋轉 rotation 和 縮放 scale 其實所有的移動都會導致pos...