locked
código de xna RRS feed

  • Pergunta

  • olá,estou criando um jogo xna par a wp8.1 e é o seguinte,preciso de duas ajudas:

    1)como faço para movimentar o "personagem" em touchscreen por exemplo,para pc's eu sei q é assim:

    if (Keyboard.GetState().IsKeyDown(Keys.D))
                {
                    position.X += 5;                  
                }

    ai,estamos usando o keyboard,mas como faço para usar o teouchscreen?

    2) como faço para que se esse personagem bater em determinado lugar por exemplo um quadrado o personagem morra.

    sexta-feira, 20 de junho de 2014 00:48

Respostas

  • Bom dia Juliano,

    In This Section

    Working with Touch Input (Windows Phone)
    Demonstrates how to detect and use multitouch input in an XNA game.
    Detecting Gestures on a Multitouch Screen (Windows Phone)
    Demonstrates how to detect and use multitouch gestures in an XNA game.
    Retrieving Accelerometer Input (Windows Phone)
    Demonstrates how to detect and use accelerometer input in an XNA Game Studio game on Windows Phone.
    Retrieving Gyroscope Input (Windows Phone)
    Demonstrates how to detect and use gyroscope input in an XNA Game Studio game on Windows Phone.

    http://msdn.microsoft.com/en-us/library/ff827744.aspx

    http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.touchpanel.getcapabilities(v=xnagamestudio.40).aspx

    http://msdn.microsoft.com/en-us/library/ff434208(v=xnagamestudio.40).aspx

    E ainda um tutorial de XNA, sobre o que precisa para o 2D por exemplo.

    http://msdn.microsoft.com/pt-br/library/hh416748.aspx

    Espero que resolva seu problema.

    Abraço


    sexta-feira, 20 de junho de 2014 11:35
  • Bom dia Juliano.

    Você tem que ser um pouco mais específico, tipo, como você quer movimentar esse personagem (touch é meio superficial). O que quero dizer é o seguinte, você poderia movimentar seu personagem dividindo a tela do seu aparelho em duas partes(direita e esquerda) fazendo com que o reconhecimento ficasse a encargo da posição do toque. Ou você poderia identificar dois botões que pudessem simular os botões físicos. Em ambos os casos seriam acionados por meio do touch, mas um necessitaria de um toque sobre o objeto e o outro sobre uma área específica.

    A segunda pergunta também é vaga, o que você não consegue fazer?

    O personagem colidir com um objeto ou fazer ele morrer?

    Pois você pode definir uma função morrer para que seja chamada em vários eventos, como colisões ou quedas.

    tente ser um pouco mais específicos para que possamos ajuda-lo. Até mais.

    sexta-feira, 20 de junho de 2014 11:42
  • Juliano,

    Depende de como você quer que o objeto se movimente

    Bom, segue um exemplo de movimentação estilo Space Invaders.

    Imagino que você já tenha desenhado os elementos na tela, tratarei o inimigo como rect.

    Primeiramente você deve marcar uma posição inicial para o objeto(no caso inimigo).

    Fiz isso criando uma variável chamada rectXstartPosition para a posição X e rectYstartPosition para a posição Y.

    No método update fiz isso:

    protected override void Update(GameTime gameTime)
    {
                // Allows the game to exit
       if (GamePad.GetStatePlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                    this.Exit();
    
                // TODO: Add your update logic here
    
                base.Update(gameTime);
    
                //inicia o movimento do inimigo
                rect.X += moveVelocity;
    
                //verifica a posição do objeto em relação a posição inicial + 100 pixels
                //Caso a posição seja maior que a posição original + 100, a velocidade do objeto muda, assim como se ela for menor
                if (rect.X > rectXstartPosition + 100)
                {
                    moveVelocity = moveVelocity * -1;
                    rect.Y += 5;
                }
                else if (rect.X < 0)
                {
                    moveVelocity = moveVelocity * -1;
                    rect.Y += 5;
                }
    
    
     }

    Espero ter ajudado

    sábado, 21 de junho de 2014 05:06

Todas as Respostas

  • creio que seja melhor você fazer essa pergunta no fórum de Windows Phone.
    sexta-feira, 20 de junho de 2014 11:27
  • Bom dia Juliano,

    In This Section

    Working with Touch Input (Windows Phone)
    Demonstrates how to detect and use multitouch input in an XNA game.
    Detecting Gestures on a Multitouch Screen (Windows Phone)
    Demonstrates how to detect and use multitouch gestures in an XNA game.
    Retrieving Accelerometer Input (Windows Phone)
    Demonstrates how to detect and use accelerometer input in an XNA Game Studio game on Windows Phone.
    Retrieving Gyroscope Input (Windows Phone)
    Demonstrates how to detect and use gyroscope input in an XNA Game Studio game on Windows Phone.

    http://msdn.microsoft.com/en-us/library/ff827744.aspx

    http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.touch.touchpanel.getcapabilities(v=xnagamestudio.40).aspx

    http://msdn.microsoft.com/en-us/library/ff434208(v=xnagamestudio.40).aspx

    E ainda um tutorial de XNA, sobre o que precisa para o 2D por exemplo.

    http://msdn.microsoft.com/pt-br/library/hh416748.aspx

    Espero que resolva seu problema.

    Abraço


    sexta-feira, 20 de junho de 2014 11:35
  • Bom dia Juliano.

    Você tem que ser um pouco mais específico, tipo, como você quer movimentar esse personagem (touch é meio superficial). O que quero dizer é o seguinte, você poderia movimentar seu personagem dividindo a tela do seu aparelho em duas partes(direita e esquerda) fazendo com que o reconhecimento ficasse a encargo da posição do toque. Ou você poderia identificar dois botões que pudessem simular os botões físicos. Em ambos os casos seriam acionados por meio do touch, mas um necessitaria de um toque sobre o objeto e o outro sobre uma área específica.

    A segunda pergunta também é vaga, o que você não consegue fazer?

    O personagem colidir com um objeto ou fazer ele morrer?

    Pois você pode definir uma função morrer para que seja chamada em vários eventos, como colisões ou quedas.

    tente ser um pouco mais específicos para que possamos ajuda-lo. Até mais.

    sexta-feira, 20 de junho de 2014 11:42
  • olá,o seguinte fazer ele se mover eu ja consegui.

    a segunda é q por exemplo:

    tenho 2 quadrados na tela um que se movimenta sozinho q um que o usuario devera movimentar e quando esses dois quadrados se baterem "colidir" um com o outro,  o personagem morra,por exemplo acabe o jogo e se puder me ensinar como fazer por exemplo o outro quadrado ficar se movimentando na tela sozinho,agradeço"

    sexta-feira, 20 de junho de 2014 20:15
  • Juliano,

    Depende de como você quer que o objeto se movimente

    Bom, segue um exemplo de movimentação estilo Space Invaders.

    Imagino que você já tenha desenhado os elementos na tela, tratarei o inimigo como rect.

    Primeiramente você deve marcar uma posição inicial para o objeto(no caso inimigo).

    Fiz isso criando uma variável chamada rectXstartPosition para a posição X e rectYstartPosition para a posição Y.

    No método update fiz isso:

    protected override void Update(GameTime gameTime)
    {
                // Allows the game to exit
       if (GamePad.GetStatePlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                    this.Exit();
    
                // TODO: Add your update logic here
    
                base.Update(gameTime);
    
                //inicia o movimento do inimigo
                rect.X += moveVelocity;
    
                //verifica a posição do objeto em relação a posição inicial + 100 pixels
                //Caso a posição seja maior que a posição original + 100, a velocidade do objeto muda, assim como se ela for menor
                if (rect.X > rectXstartPosition + 100)
                {
                    moveVelocity = moveVelocity * -1;
                    rect.Y += 5;
                }
                else if (rect.X < 0)
                {
                    moveVelocity = moveVelocity * -1;
                    rect.Y += 5;
                }
    
    
     }

    Espero ter ajudado

    sábado, 21 de junho de 2014 05:06