2011-08-29 77 views
1

注意:我已經搜索了現有的答案,但無法從這個角度真正找到一些東西。如果您發現重複,請發表評論。如何創建簡單的遊戲動畫

我在發展多年一直在努力,但我沒有(ZIP!)遊戲/圖形開發的經驗。

像許多其他人一樣,我認爲嘗試爲Android編寫小型遊戲會很有趣。不過,我無法真正瞭解創建最簡單的動畫所需的步驟。例如,假設我想畫一輛移動在風景或地圖上的小型車輛。我真的不知道從哪裏開始。

我想我會需要繪製的汽車看起來如何,因爲它驅動,即紡輪,有些抽搐等。這是基本上是每一個幀? - 在油漆中繪製10個圖​​像,然後循環它們?接下來Q會是 - 如何循環它們?我猜想有一些動畫對象/系統可以加載內容然後運行?這在平臺和sdk之間可能會有所不同,但我也懷疑這些原則通常是相同的,就像大多數widget/gui系統的原理一樣。

然後我猜這輛車需要動畫才能在地圖上移動。此動畫與其他動畫並行運行?

..等等等,這是非常簡單的遊戲動畫的基本面的問題。在所有遊戲中都有一些常見的工作流程,即爲iPhone編寫遊戲的人仍然知道如何爲android做同樣的事情。

爲了說明這一點,我沒有看到三維動畫或任何需要高級物理,高級數學,矩陣,網格物體等的東西。我只對你在塔中看到的那種圖形感興趣防禦遊戲(如 「機器人防禦」),平臺, 「暗黑破壞神」 等-games

感謝。

+2

你應該檢查出http:// gamedev。stackexchange.com/ :) – Frederik

+0

的確,應該先檢查一下不要在那裏試試。 – sharkin

回答

2

在GUI/Widget應用,你會通常有一個事件循環回調到您的代碼時,在用戶點擊按鈕或移動滑塊或什麼的。

在一個典型的遊戲中,你將有一個遊戲循環,它將反覆輪詢輸入,根據輸入驅動世界狀態前進一步,然後將世界狀態繪製到顯示器上。例如(在C++中,因爲它是我最舒服的語言):

//Holds everything in the game: the locations and velocities (and so on) 
//of all the dynamic elements, the map, the terrain, everything. 
WorldState worldState; 
while (worldState.continueGame()) { 
    Input input(InputSystem.pollInput()); 
    worldState.advanceByFrame(input); 
    OutputSystem.display(worldState); 
    sleep(1/stepTime); 
} 

我希望這給你一個想法,但不認爲這是一個實際的遊戲循環不夠好。時間碼特別是相當破碎。

如果你想有一個移動在地形車輛,那麼你可以實現WorldState這樣的:

struct WorldState { 
    void advanceByFrame(Input const& input) { 
     vehicle.moveOver(terrain); 
    } 
    Terrain terrain; 
    Vehicle vehicle; 
}; 
struct Vehicle { 
    double xPosition; 
    double yPosition; 
    int frameNumber; 
    void moveOver(Terrain const& terrain) { 
     /** some logic based on terrain */ 
     //just filler, but you can change xPosition and yPosition 
     //in whatever way you want. 
     xPosition += 32.; 
     //where numberOfFrames is determined somewhere else. 
     frameNumber = (frameNumber + 1) % numberOfFrames; 
    } 
}; 
struct Terrain { 
    /** stuff, maybe an 2d-array or whatever */ 
}; 

正如你可以看到:你的遊戲元素堅持在遊戲的長度,並修改通過將輸入應用於遊戲狀態。動畫可以通過在一組數字上進行循環來完成,這些數字表示從一組可能的圖像中顯示的當前圖像的幀號。

這是非常淺的,但我希望它給你一個典型的遊戲的整體結構的想法。