2012-07-10 136 views
0

我正在創建一個2D遊戲。我在遊戲中實現了一個物理引擎,所以當玩家跳過他的弧線時,會遵循給定速度和遊戲引力的路徑。當玩家下降時,由於它有加速度,下降的距離將繼續變得越來越大。加速時Pygame碰撞檢測

如果新位置將玩家放在物體的另一側,我如何知道玩家是否與其路徑中的物體發生碰撞?

我可以使用循環並測試玩家路徑上的每個點。這是唯一的方法嗎?有沒有更優雅的算法或pygame解決方案?

回答

1

一種解決方案是添加一個與速度矢量相反的不可見尾部,足夠長以補償幀之間行進的大距離。

1

Pygame本身不能幫助你我害怕。它有一些幫助你確定矩形是否相交的apis,但是正如你發現的那樣,如果一個實體的行進速度足夠快,他們可以在一次更新時在地面的一側,在下一次更新時在另一側更清晰側。這有時被稱爲「隧道效應」。

解決此問題的最簡單方法是:不要讓您的實體足夠快地移動通過地面(或其他實體)。您可以將「終極速度」應用於您的下降實體,或者增加碰撞檢測的頻率。

有更復雜的算法來解決這個問題,通常稱爲「連續碰撞算法」,但這些更復雜。這些算法可以在線獲取大量信息,因此如果您願意,我會留給您進行研究。