unity的三種物體移動方法

2021-07-24 23:32:37 字數 1183 閱讀 1163

1.帶有rigidbody元件的物體移動一般採用 getcomponent().velocity  如:

float h = input.getaxis("horizontal");

float v = input.getaxis("vertical");

if(input.getbuttondown("jump"))

vel = jump;

else

vel = getcomponent().velocity.y;

vector3 movement = new vector3(h * speed, vel, v * speed);

movement=vector3.clampmagnitude(movement,speed);//限制對角移動的速度和沿著軸線一樣

movement = transform.transformdirection(movement);//因為velocity是相對全域性座標而言的,所以要把區域性座標轉換成全域性座標 如:往左轉是相對於移動的物體的 

getcomponent().velocity =movement;

2.帶有charactercontroller元件的物體一般採用move(movement)  如:

vector3 movement = new vector3(h * speed, -9.8f, v * speed);

movement = vector3.clampmagnitude(movement, speed);

movement *= time.deltatime;

movement = transform.transformdirection(movement);//因為move是相對全域性座標而言的,所以要把區域性座標轉換成全域性座標 如:往左轉是相對於移動的物體的 

_charactercontroller.move(movement);

3.什麼都不帶的物體移動一般採用transform.translate(x,y,z)  如:

注:transform.translate的移動是不受物理作用的 即:可以穿牆   所以如果不是在平地上移動是不能用translate的

transform.translate(movement);//因為一般物體的移動就是在母座標(不一定是全域性如果它有母物體的話)下移動,所以一般不需要用transformdirection(movement)轉換



Unity 物體移動的三種方式

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

物體移動 三種方法

api transform.translate 直接對物體座標進行操作 api 3d rigidbody.velocity new vector3 speed.x,speed.y,speed.z 2d rigidbody.velocity new vector2 speed.x,speed.y 對剛...

unity的三種移動方式

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