高速移動的物體的碰撞穿透的問題的解決方法

2021-08-09 09:46:40 字數 609 閱讀 5592

物體的移動跟碰撞的檢測可以說是遊戲開發者最常見的問題,當在開發測試的過程中可能為出現以下情況(以牆壁跟汽車為例,汽車撞牆壁):

1.牆壁碰撞體太薄,汽車直接穿過牆壁;

2.汽車速度太快,直接穿過牆壁。

以上的問題都可以用兩幅圖來說明:

開始移動(向右):

一幀過後:

在這裡說一下,unity的對碰撞體的碰撞檢測是需要時間的,上面的原因是因為在執行一次碰撞檢測之前,移動的範圍過大,導致此時碰撞穿透問題。

解決方法:在移動時先判斷移動後的位置與現在的位置作射線檢測,若有碰撞則移動失敗否則移動成功。

因為這裡的**比較簡單就不列出來,這裡主要講的是一種比較簡單的解決方式。

那麼,這篇博文就到這裡,我們下期再見!

物體的移動

我們可以先建立乙個小球,新增指令碼 private float h 0.0f private float v 0.0f private transform tr public float movespeed 10.0f void strat void update private float h 0...

Unity中的物體移動

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

Unity中物體的移動方式

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