2013-02-01 22 views
0

我正在製作一個簡單的遊戲,我希望能夠擁有多個具有自己屬性的精靈,而不是一次控制它們,能夠按下按鈕並循環到下一個精靈並且獨立地移動它們,而不需要隨着移動的精靈一起移動。製作多個精靈並選擇使用哪一個

3精靈在那裏我可以使用上,下,左,右移動一個精靈,然後打像2號鍵,然後將其切換控制,此舉另一精靈以及動畫它們然後切換回

我有一個精靈類使用鍵盤(當您按下向右移動向量權和經過動畫循環)

我的朋友說,使用列表中另一個類,其處理與精靈運動控制它,並把條件,如列表= 2或其他東西,然後控制女巫其他精靈

回答

0

這是我的想法,一個簡單的方法來做到這一點。 在Game1類你應該添加一個新的變量

int selection = 1; 

現在去Game1類的Update方法和添加此。

KeyBoardState keyboardState = KeyBoard.GetState(); 

//this is saying that if the selection is 1, only your first sprite will Update, but if press 2 or 3, the selection changes, and the new selected sprite will be the only sprite Updating. 

if (selection == 1) 
{ 
    firstSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.2)) 
     selection = 2; 
    if (keyboardState.IsKeyDown(Keys.3)) 
     selection = 3; 
} 

if (selection == 2) 
{ 
    secondSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.1)) 
     selection = 1; 
    if (keyboardState.IsKeyDown(Keys.3)) 
     selection = 3; 
} 

if (selection == 3) 
{ 
    thirdSprite.Update(); 

    if (keyboardState.IsKeyDown(Keys.2)) 
     selection = 2; 
    if (keyboardState.IsKeyDown(Keys.1)) 
     selection = 1; 
} 

我希望這有助於反正。

+0

@ user1836222我希望答案很有幫助,但是,下一次您有關於XNA的問題時,您可以在gamedav.stackexchange.com上獲得更多幫助 –

0

我傾向於處理基於上下文的sprite變化的方式是將一個小類附加到我的對象。這個類擁有各種動畫集合。有很多方法可以做到這一點,這取決於您在運行前對動畫的瞭解程度,但在您的情況下,聽起來最簡單的可能是Dictionary<int, List<Rectangle>>Dictionary<int, Rectangle[]>。對於每個動畫,製作一個矩形列表(或數組),其中每個矩形描述動畫中下一幀的位置。然後你有int currentAnimation的地方,你可以設置你的移動代碼。然後在繪製代碼中,您只需遍歷animations[currentAnimation],繪製每個幀一段時間。爲此,您需要存儲幀的顯示時間,添加每個更新循環所用的時間,並且當它等於或大於您的每幀時間時,將其歸零並移至下一幀。