簡體   English   中英

快速移動的機體有時會在Box2d,AndEngine中錯過碰撞

[英]Fast moving bodies miss the collision sometimes in Box2d, AndEngine

我有一個動態的快速移動體(A)。 它應該與另一個身體(B)發生碰撞。 A與B碰撞,但有時它會在沒有碰撞的情況下通過B體。 這是完全隨機的行為。 我必須有這種碰撞。 請隨意指導它為什么這樣做。

由於在單個時間步長中的大運動,一個物體穿過另一個物體的效果被稱為隧道效應

Box2D使用動態和靜態對象之間的連續碰撞檢測來解決此問題。 但是,您的情況(動態與動態)不會自動處理,因此在碰撞評估的確切時刻,您的對象是否恰好處於碰撞位置,這只是一個隨機骰子投擲。

來自Box2d手冊

通常情況下,動態物體之間不使用CCD。 這樣做是為了保持合理的性能。 在某些游戲場景中,您需要使用動態物體來使用CCD。 例如,您可能想要在一堆動態磚塊上拍攝高速子彈。 沒有CCD,子彈可能穿過磚塊。

Box2D中的快速移動物體可以標記為子彈。 子彈將使用靜態和動態物體執行CCD。 你應該根據你的游戲設計決定哪些機構應該是子彈。 如果您決定將身體視為子彈,請使用以下設置。

bodyDef.bullet = true;

子彈標志僅影響動態物體。

Box2D按順序執行連續碰撞,因此子彈可能會錯過快速移動的物體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM