2017-05-31 96 views
1

目前我正在進行網絡2d平臺遊戲。Box Collider 2D與Polygon Collider 2D之間的碰撞不起作用

我的球員是一個空的對象,作爲家長我的實際圖形等空對象有一個rigidbody (3d)附着於它,因爲它需要有一個以使用configurable joint組件(注:我將我的播放器圍繞使用這個三維剛體)。然而,玩家身體,一個圖形的孩子,有一個box collider 2d附加到它,因爲它畢竟是一個2D遊戲,必須與其他2D物體相撞。

我的平臺附有polygon collider 2d(如果值得一提的話,它連接到平臺效應器)。

現在,儘管我的玩家身體(這是我的玩家對象的孩子的圖形)和我的平臺上都有它們,但它們不會相互碰撞並且可以簡單地進入對方(它們都不是被標記爲isTrigger)。

爲了解決這個問題,我想我會給玩家主體添加一個rigidbody 2D,看看它是否會做任何事情。現在加入rigidbody 2D碰撞確實奏效,但只要我做出rigidbody 2D的所有位置和旋轉限制勾選,或者一旦我將其設置爲kinematicstatic,它就會停止與我的平臺發生衝突。問題是我需要rigidbody 2Dstatic或不能移動,因爲我當前使用附加的rigidbody (3d)移動我的播放器對象,並且不希望播放器主體在與對象碰撞時有任何額外的移動。

我知道這是相當多的信息,所以如果您有任何問題或想進一步的信息只是評論,我會很快回應。謝謝 :-)!

編輯: 2D射線管型也無法給玩家身上打box collider 2D

編輯2: 因此,要回顧:

如果任何球員的身體或平臺具有rigidbody 2d不是靜態的(動態)並且可以移動碰撞工作。但是目前我的播放機機身上只有rigidbody 2D,但它必須是靜態的(如前所述)以及box collider 2d。另一方面,我的平臺目前只有polygon collider 2d,因爲我不明白爲什麼它需要rigidbody 2D

+0

由於這個問題是沒有這麼多關於C#,因爲它是團結,你可能想嘗試過在https://開頭gamedev.stackexchange.com/ –

+0

是的,我會嘗試...雖然這個問題對於編碼人員來說很獨特,但我認爲這也是Stack Overflow的一個合適的問題。 @TimothyGroote – RaZ

+0

可以肯定的是,如果他們有一個剛體,你可以總結出你的兩個物體(平臺和球員身體)中的每一個/靜止/運動時,他們不碰撞? – Isuka

回答

1

如果靜態對撞機沒有剛體,如果它是靜態的或者它有運動剛體,則它不會檢測與另一對撞機的碰撞。您的兩個物體中至少有一個不需要是靜態的,並且要有一個非運動的剛體才能被正確檢測。所以您需要將Rigidbody2D添加到您的平臺。

當你對爲什麼對撞機不會與另一個碰撞的問題有疑問時,請務必參考Unity的文檔this page,它總結了哪種碰撞機會與另一個碰撞機相撞。

+0

但是我無法讓我的球員的身體的剛體非靜態我應該如何去不讓我的平臺在碰撞時移動,同時有一個非靜態的剛體? (非常感謝你的回答) – RaZ

+0

不要誤會我的意思:你的玩家身體的對撞機可以是靜態的。但是您只需將Rigidbody2D添加到平臺對象中,而無需將其設置爲靜態或動態。它應該以這種方式工作。 – Isuka

+0

非常感謝你我會盡力這麼做......(然後接受你的回答) – RaZ

0

Rigidbody2D不能Rigidbody3D碰撞,這裏有一個解決辦法,雖然

http://answers.unity3d.com/questions/580769/can-rigidbody-2d-collide-with-3d-colliders.html

+0

爲什麼Rigidbody2D必須與Rigidbody3D相沖突? – RaZ

+0

您的平臺具有2D多邊形對撞機,您的玩家擁有剛體3D和2D對撞機 - 這意味着就我所知它們不會一起工作。 – Fiffe

+0

哦,好吧,這開始變得更有意義了......即使它們不在同一個對象上,它們仍然不能在一起工作,因爲一個在父母身上而另一個在孩子身上 – RaZ