2013-12-15 39 views
2

我想創建自定義地圖。它應該是或者看起來像一張圖片,但根據用戶點擊的部分,它應該將用戶移到不同的位置(即開始一個不同的活動)。我已經看到它在幾場比賽中完成,但我不知道如何自己做。Android遊戲開發 - 導致不同活動的自定義地圖

圖片部分應該有非幾何邊界(很明顯很容易用很多方形圖片完成)。可悲的是,我甚至不知道用什麼術語來描述我想要做什麼,因此我找不到任何有用的教程或討論的主題。

實施例: 圖片:http://i236.photobucket.com/albums/ff40/iathen/mapEx.png

  • 如果用戶觸摸紫色滑動,他(她)應該被導向本activity_1
  • 如果用戶觸摸藍色滑動,他(她)要含鉛到activity_2
  • 如果用戶觸摸綠色的滑軌,他(她)應該含鉛到activity_3

回答

0

在我的經驗主要有2(最常用的)的方式來交流請將此解除。

第一個(我的最愛): 從PNG

獲取數據,您應該多層寫的畫布。這些圖層構成您的「區域」(圖像中的藍色,綠色和紫色)​​。要獲取這些區域的數據,您可以從PNG(透明膠片偏離課程)中獲取數據,以便隨意編寫畫布。您必須將值存儲在可以從用戶點擊的位置(非透明區域)。請注意,根據地圖大小,屏幕分辨率,地圖尺寸等,此值可以放大/縮小。

將圖層寫入畫布後,應檢查用戶水龍頭和存儲的區域。您應該在這裏考慮您的代碼中處理用戶點擊的順序。例如,在您的圖像中,紫色圖層位於頂部,因此必須先處理,藍色爲第二層,綠色爲最後一層。這樣你可以在更大的區域內擁有一個「島」。

第二種方式: 生成邊界programmaticaly

我認爲這個解決方案是不言自明的。我唯一遇到的這種變體是當表面邊界變得混亂時,生成合適的方程真的很複雜。

編輯: 使用第一種方法可以採用多個PNG圖像加載數據或使用單個PNG與編碼到字節(即RGB值)數據。由您來決定執行哪一個。

希望它能幫助!

0

由於觸摸屏本身並不是非常準確,所以按鈕的碰撞檢測也不需要。嘗試製作複雜的碰撞檢測算法來檢測這些奇怪形狀內的觸摸是浪費時間。

由於您正在製作遊戲,因此我假設您知道如何處理自定義觸摸事件以及畫布(至少)。有很多方法可以做你想做的事情,但是在你鏈接的特定示例圖像中是一種特殊情況。

您可以圍繞三個斑點創建一個巨型邊界圓,然後檢查用戶是否觸摸了圓的邊界(即檢查觸摸到圓心的距離是否小於或等於半徑)。一旦你確定了它,你可以通過將它分成3個相等的部分來檢查它所屬的圓的哪一部分。需要一些數學,但不應該那麼複雜。

這不是一個完美的解決方案,但應該足夠好。雖然,你可能不得不稍微改變一下按鈕,這樣它們不會水平伸展,否則一個邊界圓不是理想的。

個人而言,在我的遊戲中,我總是有代表遊戲視覺元素(如按鈕)的「節點」。我不會像使用大圖像那樣使用大圖像,而是爲每個按鈕創建單獨的圖像,然後獨立檢查與觸摸事件的碰撞。這樣我就可以讓每個按鈕檢查自己的個別邊界圓圈,或者,如果絕對必要,我甚至可以爲每個單獨的按鈕定製算法。

這些都不是完美的解決方案。如果你確實想要一個像素完美的解決方案,你需要實現一些多邊形碰撞檢測算法

要考慮的一件事是屏幕大小和比例。你應該使用的唯一常量是百分比。