2016-11-21 60 views
2

我需要在我的世界中使球進入一個帶有多個管的管。我通過創建多個盒子形狀來創建一個管子,然後我移動並旋轉以完成管子的巡視。到現在爲止還挺好。根據一個人的速度在身體之間碰撞的問題

我現在正在努力與這些管和球之間的碰撞(一個基於單個球形的身體)。根據我施加在球上的速度,有時球會像沒有身體一樣穿過管。如果我應用較小的速度值,則碰撞按預期工作。

我嘗試了許多修復方法,例如提高求解器的迭代次數,改變世界的步驟,改變contactMaterial的不同選項,但似乎沒有任何工作。由於我對Cannon.js和物理引擎一般都比較陌生,所以我想知道我是否錯過了我的世界的特殊配置或類似的東西。

我創建兩個快速的GIF顯示基於所述three_fps示例速度影響的碰撞:

歡迎任何幫助!謝謝:)

回答

0

我認爲這在很大程度上取決於什麼計算碰撞和如何。前段時間我創建了一個小遊戲,而且我遇到了同樣的問題。基本上,解決方案是將移動對象的當前位置差異添加到對象的深度(因此它將對象視爲靜止而另一個視爲移動)。

這可以修復非常薄的物體與快速精靈的碰撞,如果精靈快(大位置增量),那麼薄物體被認爲是厚的,如果它很慢,它仍然很薄。

這可能很難解釋,如果你想看看它在這裏的代碼。 https://github.com/Mc128k/SquaredBobble

1

瞭解更多關於隧道問題的信息here。需要注意的是Cannon.js不已經連續碰撞檢測(CCD),因此可能的修補程序是:

  • 使用較小的時間步長,
  • 使管壁增厚,或
  • 保持shootVelo小。