1
我正在開發純Java中的2D遊戲,直到現在我已經有了一個噪聲映射系統,可以和像Minecraft一樣的塊(和實體)一起工作。Java中的2D平鋪遊戲優化
我存儲瓷磚的方式是通過創建int[s * s]
陣列,其中s
是塊的一側具有的大小(以瓷片爲單位)。然後,我有一個Tiles的靜態數組,它包含遊戲中每個可能的切片,用一個整數索引。這些是在每個塊中存儲在int[s * s]
中的整數。現在,我希望能夠覆蓋瓷磚,比如看不見的產卵瓷磚,牆壁,樹木和過渡瓷磚(例如,當草變成沙子時:沙子上應該有草邊,這將是一塊新瓷磚)。
問題是隻有一個整數可以存儲在塊的每個座標中。另一種方法是將瓷磚的實際實例放入塊中,並將疊加的瓷磚指向它們正下方的塊(如堆棧),但我認爲這是一種不好的方法。我測試的另一種方法是製作一系列瓷磚列表,這也非常糟糕。
這將是一個很好的方法來實現這一目標?
好的,所以通過這樣做,我不得不把我的樹木,產卵者等變成實體,實際上這沒有問題。這很好。但是如果我想「混合」瓷磚呢?一個例子是從草地到沙地的過渡:我需要在沙地磚內有一塊草地。我想要做的是將這個邊框設置爲一個新的Tile,並將它繪製在沙地上,這需要在同一個地方放置兩塊瓷磚(或不是?)。 – Thiago 2013-03-19 03:00:31
你可以實現邊界的幾種方法:a)檢測它們並在渲染時繪製它們b)將它們作爲實體c)實現圖塊疊加(每個方塊多個圖塊,如實體)d)自動生成具有邊框的多個圖塊版本。我通常可能更喜歡a),但是YMMV,這取決於您的整體發動機設計以及您希望擁有的藝術靈活性。 – mikera 2013-03-19 03:37:02
我會嘗試第一種方式,謝謝。 – Thiago 2013-03-19 15:30:26