2012-04-10 174 views
2

我對這一切都很陌生,但我試圖讓自己成爲一個簡單的2D遊戲。 我決定做一種迷宮類型的遊戲,我正在爲此做的是繪製迷宮作爲紋理,然後有另一個紋理作爲我的角色在這迷宮中移動。簡單的二維碰撞檢測C++

但是,我非常努力的碰撞檢測,使我的角色不只是穿牆而過。我被告知我可以使用glReadPixels來查找背景的顏色,但是每當我嘗試這個時,它都會忽略顏色並繼續穿過牆壁。

任何人都可以請幫助我,告訴我如何做到這一點,因爲我找不到任何有用的東西。 在此先感謝。

回答

1

根據迷宮類型的不同,如果您只有單位長度的垂直和水平牆,您可以在2D數組/矩陣中表示迷宮和當前位置,並根據迷宮矩陣中新位置的內容。

你將不得不做一些翻譯/從矩陣座標和屏幕座標

優點:

  • 你不需要從屏幕讀取
  • 迷宮可大於什麼適合屏幕上 - 繪製相關部分只

缺點:

  • 您只能擁有「bolck」類型的地形(例如,垂直/水平牆)
  • ,如果你想添加movign敵人,碰撞檢測可太粗(你無法躲避怪物「只是一個頭發/像素」)
+0

他們只是垂直和水平壁但它都在一個大質地上。我將如何去創建數組/矩陣並更新它?我對此很不好,我很抱歉。 – user1324894 2012-04-10 19:31:57

+0

我會將大的紋理分解成小的統一大小的瓷磚(例如牆壁,通道,門等),然後根據迷宮矩陣中的值動態地將其分配到屏幕上(例如,矩陣中的值0代表路徑可行走,1代表擋牆)。然後,您可以對矩陣進行所有計算,並將迷宮的狀態呈現在屏幕上 - 優點是它比一個大質地更靈活。 YOu可以重複使用相同的磁貼,(節省磁盤空間);動態地改變迷宮(例如,關門與開門);等等。 – Attila 2012-04-10 19:39:52

+0

啊我想我已經開始明白你來自哪裏,所以它會是一個更小的紋理的正方形陣列,這些紋理都可以放在一起來製作地圖?因爲我現在正在做的是將其作爲一個紋理繪製,並將角色移動到一個方向上,同時將地圖朝相反的方向移動以便能夠在其周圍移動。如果我將它改爲瓦片陣列,情況仍然如此嗎? – user1324894 2012-04-10 19:51:02