Dúvida com controle em XNA

Olá pessoal,

Estou desenvolvendo meu primeiro jogo em XNA.

Mas estou com uma dúvida:

Implementei a parte que lê qual tecla é pressionado da seguinte forma:

            KeyboardState teclado = Keyboard.GetState();

            if (teclado.IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (teclado.IsKeyDown(Keys.Right))
            {
                nave.Direcao = new Vector2(1.0f, 0.0f);
            }
            if (teclado.IsKeyDown(Keys.Left))
            {
                nave.Direcao = new Vector2(-1.0f, 0.0f);
            }
            if (teclado.IsKeyDown(Keys.Up))
            {
                nave.Direcao = new Vector2(0.0f, -1.0f);
            }
            if (teclado.IsKeyDown(Keys.Down))
            {
                nave.Direcao = new Vector2(0.0f, 1.0f);
            }

            if ((teclado.IsKeyDown(Keys.Left)) && (teclado.IsKeyDown(Keys.Up)))
            {
                nave.Direcao = new Vector2(-1.0f, -1.0f);
            }
            if ((teclado.IsKeyDown(Keys.Left)) && (teclado.IsKeyDown(Keys.Down)))
            {
                nave.Direcao = new Vector2(-1.0f, 1.0f);
            }
            if ((teclado.IsKeyDown(Keys.Right)) && (teclado.IsKeyDown(Keys.Up)))
            {
                nave.Direcao = new Vector2(1.0f, -1.0f);
            }
            if ((teclado.IsKeyDown(Keys.Right)) && (teclado.IsKeyDown(Keys.Down)))
            {
                nave.Direcao = new Vector2(1.0f, 1.0f);
            }

            if (teclado.IsKeyDown(Keys.Space))
            {
                nave.Atirar(this, gameTime, nave.Posicao);
            }

No entanto, da forma atual, quando eu aperto a seta para a esquerda do teclado, por exemplo, e depois eu solto, o meu objeto continua indo para a esquerda.

Gostaria de deixar de uma forma que quando eu solte a tecla, o meu objeto para de andar na tela.

Alguém sabe uma solução para isso?

Pessoal, consegui arrumar.

A solução para arrumar isso foi:

            KeyboardState teclado = Keyboard.GetState();

            var v = new Vector2(0.0f, 0.0f);

            if (teclado.IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (teclado.IsKeyDown(Keys.Right))
            {
                v.X += 1.0f;
            }
            if (teclado.IsKeyDown(Keys.Left))
            {
                v.X -= 1.0f;
            }
            if (teclado.IsKeyDown(Keys.Down))
            {
                v.Y += 1.0f;
            }
            if (teclado.IsKeyDown(Keys.Up))
            {
                v.Y -= 1.0f;
            }

            nave.Direcao = v;

            if (teclado.IsKeyDown(Keys.Space))
            {
                nave.Atirar(this, gameTime, nave.Posicao);
            }

Mas agora tenho uma dúvida.

Quando tento movimentar para a diagonal superior esquerda, pressionando seta para cima e lado, eu não consigo atirar com o espaço. Já para as outras diagonais eu consigo.

Mas no computador de um amigo, ele consegue atirar normalmente.

O problema seria alguma incompatibilidade com o teclado?