我有点问题。我在我的游戏的标题屏幕或主菜单中工作。以下是主窗口的屏幕截图:
和代码:
class MenuPrincipal
{
public Texture2D Fondo { get; set; }
public Texture2D Cursor { get; set; }
int cambiar = 0;
int tiempoTranscurrido;
KeyboardState teclaActual;
bool menuActivo;
public bool MenuActivo
{
get { return menuActivo; }
set { menuActivo = value; }
}
public MenuPrincipal(Texture2D fondo, Texture2D cursor)
{
Fondo = fondo;
Cursor = cursor;
}
public void Update(GameTime gameTime)
{
teclaActual = Keyboard.GetState();
tiempoTranscurrido = gameTime.ElapsedGameTime.Milliseconds;
if (tiempoTranscurrido > 50)
{
tiempoTranscurrido = 0;
if (teclaActual.IsKeyDown(Keys.Down))
{
if (cambiar > 2)
cambiar = 0;
else
cambiar++;
}
}
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(Fondo, new Rectangle(0, 0, 800, 600), Color.White);
switch(cambiar)
{
case 0: spriteBatch.Draw(Cursor, new Rectangle(325, 225, 16, 12), Color.White);
break;
case 1: spriteBatch.Draw(Cursor, new Rectangle(325, 281, 16, 12), Color.White);
break;
case 2: spriteBatch.Draw(Cursor, new Rectangle(325, 336, 16, 12), Color.White);
break;
}
}
}
}
当用户按下向下箭头键时,我希望光标从“un jugador”移动到“opciones”,从“opciones”移动到“creditos”。但是,当用户按下向下键时,光标移动得非常快。我想要一个速度限制,这样当我按一次键时,光标移动一个选项。如果我放置“限制帧”(变量tiempoTranscurrido
),则光标永远不会移动。如果我没有放任何东西,光标移动得非常快。
答案 0 :(得分:2)
添加一个标记,直到键出现,就像这样......
bool keyDown = false;
public void Update(GameTime gameTime)
{
teclaActual = Keyboard.GetState();
tiempoTranscurrido = gameTime.ElapsedGameTime.Milliseconds;
if (tiempoTranscurrido > 50)
{
tiempoTranscurrido = 0;
if (teclaActual.IsKeyDown(Keys.Down) && !keyDown)
{
keyDown = true;
if (cambiar > 2)
cambiar = 0;
else
cambiar++;
}
if (teclaActual.IsKeyUp(Keys.Down))
{
keyDown = false;
}
}
}