2011-08-29 57 views
1

好吧,目前爲止,我在我的Game1類(Main class)中有我的碰撞檢測。 例如:我的球員和球之間的矩形碰撞。 我不希望這些碰撞在我的Game1類中。 在什麼階層的人經常檢查碰撞檢測,以及如何?關於碰撞檢測的非常基本的問題。 XNA初學者

謝謝先進。

+0

我會定義widget的哪個區域是widget類中的一個碰撞。然後我會檢查移動播放器的代碼中的碰撞。這樣你可以擁有不同的小部件,它們會有不同的碰撞區域。 –

+0

@Rhhound我真的不明白你在說什麼,也許是因爲我的英語不好,但讓我再次向你解釋我要問的問題:我想在哪裏檢查碰撞。 –

+0

@Rhhound如果我必須檢查球和球員之間的碰撞,我應該在什麼課程中實施代碼?如何? –

回答

4

我會創建一個名爲'CollisionManager'的類,通過這種方式,您可以在該類中編寫所有碰撞並在Game類中使用它們。你可以基本上稱它爲你想要的,因爲它是個人偏好。無論你怎麼稱呼它。

碰撞檢測的一個例子可以在這裏找到:example。不過,信用不過是本文的作者,而不是我自己。

更多的資源可以在App Hub找到,你可以在這裏找到更多關於XNA的信息,而不僅僅是關於碰撞。

希望它有幫助!

編輯:

基本上你擁有你需要爲你的遊戲有關的衝突中的所有功能CollissionManager類。例如,你詢問了一個槳和一個球。所以你可以用Paddle和Ball作爲參數來編寫函數。然後,如果它們發生碰撞,您可以檢查該功能。

protected boolean PaddleBallCollision(Rectangle paddle, Rectangle ball) 
{ 
if (paddle.Intersects(ball)) return paddleHit= true; 
} 

在你的遊戲類,你只需做到以下幾點:

using projectname.CollisionManager; 

而在更新(我認爲ATLEAST,它已經,因爲我用XNA一年),你可以檢查他們是否碰撞由調用你的函數。

boolean paddleHit = CollisionManager.PaddleBallCollision(paddle,ball) 

if (paddleHit == true) 
{ 
    //TODO when hit 
} 

這樣的事情我相信。由於球是圓的,矩形對它來說不是最好的,但我不能從頭頂上說出完美的東西。正如我所說,自從我使用這個版本以來已經有一段時間了,但是這應該會給你一個大概的想法!

+0

你給了我碰撞檢測的例子,這不是我所需要的。 –

+0

這是我需要的:http://stackoverflow.com/questions/7234098/in-what-c​​lass-should-i-detect-collisions –

+0

如果你有這個答案,請張貼在這裏,你會得到我的'V'和增長率。 –