2010-07-15 41 views
16

嘿,我目前正在尋找在2D視頻遊戲中實現碰撞響應的各種方法,類似於本教程Metanet有:N Tutorial我期待在XNA中實現某些東西,但任何語言都會沒事的。我更感興趣的是比實際理論以編程方式實現。我更喜歡更多適合初學者的材料,但我確實歡迎更多的高級話題。良好的二維碰撞響應參考

那麼有人可以提出一些很好的2D碰撞反應文章/書?

(PS:我更感興趣的響應比檢測)

+0

對不起,我們無法遷移到stackexchange站點。但是如果你可以訪問它們(beta版是gamedev),那麼你可以在那邊提問。 – Will 2010-07-23 17:07:09

回答

15

您提到的N tutorial已經是一個很好的資源。我也推薦非常好的文章2D Polygon Collision Detection。它帶有一個很好的C#實現和使用分離軸定理的多邊形碰撞檢測示例,並更好地解釋了一些概念。

就應對碰撞而言,它取決於場景。對於遊戲,您可能需要根據當前速度檢查可能的碰撞,然後調整實際速度以防止碰撞。你也可以實現某種「反彈」效果。無論如何,它可能會調整物體的速度和方向。

您可以使用分離軸定理來進行碰撞檢測,也可以使用多邊形投影查找特定軸上到目標的距離。 (大部分時間是你移動的矢量)。

+0

這很棒! – Jeff 2010-08-23 12:04:42

+0

不客氣! – 2010-08-24 04:06:24

+1

我覺得這個C#版本是一個更好的資源。本教程更深入地介紹了將多邊形投影到軸上的情況,我發現N圖缺失。如果任何人有任何疑問,請查看此C#程序。 – Jeff 2011-12-29 19:54:10

0

物理引擎非常複雜。使用現有的會更好。

  • Farseer(C#,派生自舊版本的Box2D)。 (C,我不認爲它有一個C#端口,但你可以製作一個)。這是一個C#編譯器。

如果您想在遊戲中使用物理,請使用Farseer或Box2D綁定。如果您想了解物理學,請考慮製作Box2D的C#端口或Chipmunk。如果你只是好奇,他們的所有代碼都是開源的。

+0

我對做逼真的物理學並不感興趣,並且對如何處理實際碰撞感興趣更多(比如N如何使用投影)。我想我正在尋找的是裸骨基礎知識,沒有什麼複雜的。我看過Box2D並聽說過Farseer,他們看起來很不錯,如果我決定製作一個基於物理的遊戲,我肯定會訴諸一個或另一個。 Box2d也在Flash上​​。 – Jeff 2010-07-16 20:23:08

1

你需要多少細節?回答其中一些問題可以幫助您消除那些不需要的軟件包。

您是否不必擔心物體旋轉?然後你需要關心槓桿臂,角動量,慣性力矩和扭矩。

你有沒有擔心變形?然後你需要進入有限元分析,壓力/應變等等 - 描述物體如何在內部對外力作出反應的東西。

摩擦效應呢?那麼你需要摩擦係數,或者可能需要空氣阻力的速度模型。

重力影響?電磁效應?其他力量?

+1

我簡直就是想要基本的迴應。一些教程,如馬里奧3例如實施會很好(雖然新馬里奧有一些非常有趣的物理...)。我想知道他們如何應對碰撞。它們是否產生最小修正向量並移出?他們使用小泉水嗎?但最重要的是,我正在尋找他們如何實現這一目標。我發佈的N教程非常接近我正在尋找的內容,但我更願意深入一些。 – Jeff 2010-08-19 02:06:21

-2
+0

我聽說過它。什麼是衝突明智?另外,不是真的我在找什麼,但是謝謝:) – Jeff 2010-08-23 22:17:22

+0

我不確定你在開發什麼環境,但Cocos2d可以用於Mac和iPhone,但我不確定它還有什麼可用於(如果有的話)。 – gWaldo 2010-08-24 12:16:27

+0

cocos適用於蘋果產品,不適用於XNA – redcodefinal 2013-08-25 02:05:00

1

如果你想碰撞RESP一個基本答案ONSE,那就是:

for each pair of objects that collide 
    ask gently to the collision detection lib their interpenetration distance 
    Apply an impulse (i.e. a force in the duration of the frame) to both objects : 
     force proportional to penetration depth (you will have to tune the coef by hand) 
     direction : perpendicular to the collision normal. 
     application point : the collision point (approximately, since it s not a point anymore but a volume) 
integrate (Euler, Verlet,)\ 
0

我正在尋找同樣的信息也最實用 的事情,我發現到目前爲止是

http://www.myphysicslab.com/collision.html

這裏對我來說,更糟糕的是塔哈特這是 無摩擦(正切碰撞衝動 只有正常衝動),我認爲與 這樣的摩擦衝動會更好,但仍然 未找到教程如何正確實施 即