unity 物體移動方式的一些筆記

2021-08-09 09:27:04 字數 943 閱讀 7888

專案裡遇到車子在場地漫遊的需求,因為要模擬真實物理效果,而且場地裡會有上下坡,所以我選擇了rigidbody.addforce的移動方法。

但是遇到一些問題 查了api之後才發現這個移動方式需要在fixedupdate而不是update裡呼叫,否則只是加乙個瞬間的力而不是持續的力。所以最後還是選擇了直接給rigidbody.velocity賦值的移動方法。

這個移動方法我遇到的問題是,因為場地裡有矮的障礙物,車子如果在撞上障礙物之後還繼續強行向前移動的話會行進到障礙物上方,最開始想的解決辦法是用空氣牆阻止車子開上障礙物,但是空氣牆做好了之後又發現車子撞到空氣牆之後還強行加速的話,車屁股會翹起來,後退撞上障礙物的話車頭會翹起來。後來去問了大佬,給的解決方法是在車子行進過程中給乙個向下的力壓住車子。這個做好以後原來調好的速度數值也不能用了因為向下加力之後車子跟地面的摩擦力太大了,而且pc端合適的數值導到移動端也又不合適了。然後大佬說可以改變材質球的摩擦力,在車子動的時候把材質球設定為0摩擦的,需要停下來的時候設定為高摩擦的。這樣加力就對車子速度沒影響。同時解決了車頭車屁股翹和pc端手機端移動資料一樣效果不一樣的問題。

改變材質球摩擦力**如下

private static physicmaterial zerofrictionmaterial;                //零摩擦材質

private static physicmaterial highfrictionmaterial; //高摩擦材質

void onenable()

if (highfrictionmaterial == null)

}// 物理材質

// 設定碰撞器到高摩擦材質

public void highfriction()

// 設定碰撞器為零摩擦材質

public void zerofriction()

Unity中物體的移動方式

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

Unity 物體移動的三種方式

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

Unity中的物體移動

1 直接改變物體的位置。例子 transform.position transform.position 某一三維向量 vector3 2 public void translate vector3 translation 物體在對應的座標系中,向引數的方向移動,每一幀移動引數大小 引數 trans...