Ponto V!

Home Matemática e Física Lançamento Oblíquo no Vacúo (XNA)
Kléber de Oliveira Andrade
Lançamento Oblíquo no Vacúo (XNA)Imprimir
Escrito por Kleber Andrade

Numa partida de golfe, um jogador bate na bola, inicialmente parada, colocando-a na em alguma área do campo, próximo ou distânte do buraco. O lançamento oblíquo estuda o movimento de corpos, lançados com velocidade inicial vo da superfície da Terra. O código deste tutorial foi criado e testado no XNA 4.0, ou seja, qualquer mudança de versão pode acarretar ou não em reajustes no código.

Fonte da imagem: http://www.ciencia-cultura.com/Pagina_Fis/vestibular00/vestibular_CinematEscalar010.html

A trajetória é parabólica, como você pode notar na figura acima. Como a análise deste movimento não é fácil, é conveniente aplicarmos o princípio da simultaneidade de Galileu. Veremos que ao projetarmos o corpo simultaneamente no eixo x e y teremos dois movimentos:

  • Em relação a vertical, a projeção da bola executa um movimento de aceleração constante e de módulo igual ag. Trata-se de um (M.U.V.) (lançamento vertical)
  • Em relação a horizontal, a projeção da bola executa um (M.U.).

Exemplo no XNA:

1º passo: Crie um novo projeto (Windows Game) e crie variáveis para armazenar a posição, velocidade, gravidade e textura do objeto.

//  Informações da bola
Texture2D imagem;
Vector2 posicao;
Vector2 velocidade;
// Informação do ambiente (gravidade = g)
float gravidade;

2º passo: Inicialize a posição do objeto e defina a sua velocidade inicial e a aceleração da gravidade do seu ambiente que será constante, tudo isso dentro do método Initialize()

protected override void Initialize()
{
      // Inicializa a posição da bola
      posicao = new Vector2(0.0f, 560.0f);
      // Configura o valor da gravidade
      // O valor da gravidade em jogos é um valor que fique
      // aparentemente bom dentro do seu jogo
      gravidade = 700.0f;
      // Configura a velocidade inicial em X e Y
      velocidade = new Vector2(320.0f, -800.0f);
      base.Initialize();
}

3º passo: Copie a textura abaixo ou outra imagem de sua preferência para você carregar e aplicar a queda livre

protected override void LoadContent()
{
     // Create a new SpriteBatch, which can be used to draw textures.
     spriteBatch = new SpriteBatch(GraphicsDevice);
     // Carrega a textura da bola
     imagem = Content.Load(@"ball");
}

4º passo: Vamos desenhar a imagem na tela

protected override void Draw(GameTime gameTime)
{
     GraphicsDevice.Clear(Color.CornflowerBlue);
     spriteBatch.Begin();
     // Desenha a bola
     spriteBatch.Draw(imagem, posicao, Color.White);
     spriteBatch.End();
     base.Draw(gameTime);
}

5º passo: Para concluir vamos aplicar a fórmula descrita no nosso objeto

protected override void Update(GameTime gameTime)
{
      // Tempo passado desde a ultima atualização
      float tempo= (float)(gameTime.ElapsedGameTime.TotalMilliseconds / 1000.0f);
      // Atualiza o movimento em X da bola
      posicao.X += velocidade.X * tempo;
      // Ataualiza a posição Y da bola
      // S = So * t + (g * t*t)/2
      posicao.Y += (velocidade.Y * tempo) + (gravidade* (float)Math.Pow(tempo, 2)) / 2.0f;
      // Atualiza a velocidade Y do objeto ( v = vo + g * t )
      velocidade.Y += gravidade * tempo;
      // Verfifica se atingiu a velocidade máxima de 600.0f pixels/segundos
      velocidade.Y = (velocidade.Y > 600.0f) ? 600.0f : velocidade.Y;
      base.Update(gameTime);
}

Com esta rotina é chamada a cada laço do jogo, o que será exibido na tela é um objeto (bola) que inicia no ponto (0, 560) com um velocidade constante horizontal de 320.0f pix/s. No eixo Y a bola sofre a ação da aceleração gravitacional retardando sua velocidade inicial de -800.0 pix/s fazendo com que em algum momento zere sua velocidade e comece uma queda livre.

Resultado

Após compilar (F5) seu código sem erro, você vai obter o seguinte resultado.

Download

Para fazer download do código criado neste tutorial, clique no ícone de download abaixo.

image


Comentários (3)
  • Anônimo
    avatar

    SUA MAE

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter