2011-03-23 86 views
1

嘿,我想做一個基本的曲棍球風格的比賽。 我有與球場,球員,對手和球一起工作的基本物理學。區分球和球員在進球衝突

我很努力地弄清楚我怎樣才能讓球進入球門 ,同時讓球員和對手不要進球。

基本上對手跟隨球,並且玩家由用戶輸入控制。 所以有兩個我需要的限制。

我需要創建一個只有球可以通過的形狀......這甚至有可能嗎? 如果球通過球門線,我可以睡覺對手嗎?

我是否正確地做了這件事?

PLAYER1只能左右移動紅框 Player2只能左右移動綠色框中 球可以在外藍盒子

playing field layout

回答

2

如果您使用Box2D,您可能需要查看傳感器

Box2D Manual摘自:

有時候遊戲邏輯需要知道何時兩場比賽重疊但不應該有碰撞響應。這是通過使用傳感器完成的。傳感器是檢測碰撞但不產生響應的固定裝置。

您可以將任何燈具標記爲傳感器。傳感器可能是靜態的或動態的。請記住,你可能有多個固定裝置,你可以有任何混合的傳感器和固體裝置。

傳感器不生成接觸點。有兩種方法可以得到一個傳感器的狀態:

  1. b2Contact :: IsTouching
  2. b2ContactListener :: BeginContact和EndContact
+0

看起來你可能會發現。 – Rob 2011-03-23 23:18:20

1

你爲什麼不使用簡單的走動碰撞檢測?

如果在曲棍球場上移動的物體是類型球員,並且他的位置/撞擊箱與球門碰撞,那麼您將他的位置改回線路,因此他可能無法與目標相交。

如果對象的類型是不是一個球員,你簡單的讓對象傳遞

+0

是這不會迫使位置,使模擬誤差玩家的?box2d文檔說「操縱身體的轉換可能會導致非物理行爲」 – Rob 2011-03-23 12:38:17

+0

我不知道你的意思是模擬錯誤,但你只需要區分玩家和球,你甚至可以讓球員只有矩形的球員和「正常」的球, – sharpner 2011-03-23 12:39:28

+0

這聽起來像我需要做的,但我不知道是否有可能與box2d,也許box2d不會幫助我在這裏。 – Rob 2011-03-23 12:43:07

0

好了,你不要讓玩家在公平的競爭環境留給向左或向右你呢?所以你只需要爲球員的目標區域做相同的邏輯。

+0

遊戲區是用靜態物體一直創建的,有沒有辦法在box2d中創建一個虛擬邊界框? – Rob 2011-03-23 12:40:14