Movimentando o personagem;
Em propriedades do Form, há uma opção chamada KeyPreview.
Para eu conseguir manipular as informações de teclas pressionadas no form, eu preciso dela ativa (True), caso contrário, todas as teclas pressionadas vão para os botões selecionados.
Vamos criar uma Estrutura para armazenar as informações do personagem.
Uma estrutura é a melhor maneira de se trabalhar com muitas variáveis. Aqui nós temos os dados de cada personagem organizado.
Vá para o evento KeyDown do Formulário.
Primeiro selecione a esquerda, Form1 Events. Depois a direita escolha KeyDown.
E uma nova Sub será adicionada.
Agora vamos recortar o código que está no Button1 e adiocionar ao evento KeyDown.
Já podemos deletar o botão.
Agora adicione o código abaixo.
No quadro violeta temos.
KeyUp
Muda o valor da variável CurrentAnimation (AtualAnimação) para costas. Ele está subindo.
Personagem.Position.Y -= 5 não muda o valor para 5, apenas diminui a quantidade em 5.
KeyDown
Muda o valor da variável CurrentAnimation (AtualAnimação) para frente. Pois o personagem está descendo.
Personagem.Position.Y += 5 não muda o valor para 5, apenas aumenta a quantidade em 5.
KeyLeft
Muda o valor da variável CurrentAnimation (AtualAnimação) para esquerda. Pois o personagem está indo para a esquerda. (ah vá, é memo?)
Personagem.Position.X -= 5 não muda o valor para 5, apenas diminui a quantidade em 5.
KeyRight
Muda o valor da variável CurrentAnimation (AtualAnimação) para direita. Pois o personagem está indo para a direita. (ah vá, é memo?)
Personagem.Position.X += 5 não muda o valor para 5, apenas aumenta a quantidade em 5.
Aqui não vou explicar novamente, apenas altere 0, 0. Coloque o personagem.position.x e personagem.position.y.
E no lugar de frente, coloque Personagem.CurrentAnimation. Como mostra a imagem acima. Dê um play no código e agora aperte as setas do teclado.
Fica desse jeito, por que?
Nós estamos fazendo uma animação, então, sempre devemos limpar onde desenhamos para a nova animação. Caso isso não aconteça só iremos desenhar em cima de onde já desenhamos ficando toda essa bagunça.
Em cima de DesenharImagem adicione :
g.Clear(Color.Black)
Chegamos ao final de mais uma aula, aqui já demos outro grande passo na criação de jogos. Espero vocês na próxima até mais.
Projeto Aula
"Nota: CurrentAnimation está como Byte na imagem, caso você siga esta aula altere para Integer. Se baixou o projeto aula não precisa mudar.
Em propriedades do Form, há uma opção chamada KeyPreview.
Para eu conseguir manipular as informações de teclas pressionadas no form, eu preciso dela ativa (True), caso contrário, todas as teclas pressionadas vão para os botões selecionados.
Vamos criar uma Estrutura para armazenar as informações do personagem.
Uma estrutura é a melhor maneira de se trabalhar com muitas variáveis. Aqui nós temos os dados de cada personagem organizado.
Vá para o evento KeyDown do Formulário.
Primeiro selecione a esquerda, Form1 Events. Depois a direita escolha KeyDown.
E uma nova Sub será adicionada.
Agora vamos recortar o código que está no Button1 e adiocionar ao evento KeyDown.
Já podemos deletar o botão.
Agora adicione o código abaixo.
No quadro violeta temos.
KeyUp
Muda o valor da variável CurrentAnimation (AtualAnimação) para costas. Ele está subindo.
Personagem.Position.Y -= 5 não muda o valor para 5, apenas diminui a quantidade em 5.
KeyDown
Muda o valor da variável CurrentAnimation (AtualAnimação) para frente. Pois o personagem está descendo.
Personagem.Position.Y += 5 não muda o valor para 5, apenas aumenta a quantidade em 5.
KeyLeft
Muda o valor da variável CurrentAnimation (AtualAnimação) para esquerda. Pois o personagem está indo para a esquerda. (ah vá, é memo?)
Personagem.Position.X -= 5 não muda o valor para 5, apenas diminui a quantidade em 5.
KeyRight
Muda o valor da variável CurrentAnimation (AtualAnimação) para direita. Pois o personagem está indo para a direita. (ah vá, é memo?)
Personagem.Position.X += 5 não muda o valor para 5, apenas aumenta a quantidade em 5.
Aqui não vou explicar novamente, apenas altere 0, 0. Coloque o personagem.position.x e personagem.position.y.
E no lugar de frente, coloque Personagem.CurrentAnimation. Como mostra a imagem acima. Dê um play no código e agora aperte as setas do teclado.
Fica desse jeito, por que?
Nós estamos fazendo uma animação, então, sempre devemos limpar onde desenhamos para a nova animação. Caso isso não aconteça só iremos desenhar em cima de onde já desenhamos ficando toda essa bagunça.
Em cima de DesenharImagem adicione :
g.Clear(Color.Black)
Chegamos ao final de mais uma aula, aqui já demos outro grande passo na criação de jogos. Espero vocês na próxima até mais.
Projeto Aula
"Nota: CurrentAnimation está como Byte na imagem, caso você siga esta aula altere para Integer. Se baixou o projeto aula não precisa mudar.