2013-02-01 21 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],绘制每个帧一段时间。为此,您需要存储帧的显示时间,添加每个更新循环所用的时间,并且当它等于或大于您的每帧时间时,将其归零并移至下一帧。