Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    Criando jogos em VB.NET - Movimento e animação do personagem I

    DragonicK
    DragonicK
    Experiente
    Experiente


    Mensagens : 542
    Créditos : 81

    Ficha do personagem
    Nível: 1
    Experiência:
    Criando jogos em VB.NET - Movimento e animação do personagem I Left_bar_bleue0/0Criando jogos em VB.NET - Movimento e animação do personagem I Empty_bar_bleue  (0/0)
    Vida:
    Criando jogos em VB.NET - Movimento e animação do personagem I Left_bar_bleue30/30Criando jogos em VB.NET - Movimento e animação do personagem I Empty_bar_bleue  (30/30)

    Criando jogos em VB.NET - Movimento e animação do personagem I Empty Criando jogos em VB.NET - Movimento e animação do personagem I

    Mensagem por DragonicK Qua Jan 25, 2012 10:30 pm

    A partir dessa aula você deverá baixar o projeto, pois muita coisa muda nessa segunda etapa. O que vimos atrás foi o básico do básico.

    Sprite

    Nessa aula o projeto contém 2 modulos e 1 form.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2solutionexp

    GameCore - Núcleo do jogo, onde estão as funções para desenho.
    GameStruct - Estrutura de dados para os personagens entre outros.

    Se quiser, não precisa deixar como a imagem acima apenas deve renomear os módulos e o form.

    Agora eu digo ... "Bem, vamos começar a escrever os códigos para trabalharmos!"

    No módulo GameStruct, vamos analisá-lo.
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2direnum

    Direção de Animação, não usei constantes dessa vez. Usei uma enumeração.
    Direção do Personagem, isso é para a informar a direção e não animação.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2personstruct

    Na estrutura do personagem temos.

    Name, nome do personagem.
    Size, este é o tamanho da Sprite (32x64).
    Position, coordenada X e Y.
    Sprite, imagem do personagem.
    Direction, direção do persongem.
    Moving, está em movimento ou não.

    As variáveis abaixo são apenas para a animação. Se cada jogador conter sua própria velocidade, podemos criar inúmeras situações entre PvE.

    Anim, número correspondente a animação da Sprite.
    AnimTime, variável para guardar o tempo da animação.
    MoveTime, variável para guardar o tempo de movimento.
    [Step], Step é uma palavra reservada do visual basic e não pode ser usada como variável ou objeto (For Next / Step). Nesse caso eu adicionei Colchetes para usar como variável.

    E as últimas variáveis, o nome já indicam para que servem.

    No Evento do Form, o KeyDown. Essas variáveis é para não apertar variás teclas ao mesmo tempo e atrapalhar a animação.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2keydown

    Não podemos esquecer da nossa saída do programa.
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2escape

    Ainda não adicionamos GameRunning, então vamos para o GameCore.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2gamecorevar


    Perceba que agora temos duas novas modificações. GameSize e GetAsyncKeyState.

    GameSize é o tamanho do nosso jogo. GetAsyncKeyState é uma função da API "user32.dll", ela retorna o pressionamento de teclas em modo asíncrono.

    Isso eu explicarei depois. Agora nossas subs de desenho. Não posso mostrar a imagem toda, então aqui vai o code.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawimg

    Código:

     Public Sub DesenharImagem(ByVal Imagem As Bitmap, ByVal X As Integer, ByVal Y As Integer)
            g.DrawImageUnscaled(Imagem, X, Y)
        End Sub
        Public Sub DesenharImagem(ByVal Imagem As Bitmap, ByVal Posicao As Point)
            g.DrawImageUnscaled(Imagem, Posicao)
        End Sub
        Public Sub DesenharImagem(ByVal Imagem As Bitmap, ByVal Screenrect As Rectangle)
            g.DrawImage(Imagem, Screenrect)
        End Sub
        Public Sub DesenharImagem(ByVal Imagem As Bitmap, ByVal ScreenRect As Rectangle, ByVal ImageRect As Rectangle)
            g.DrawImage(Imagem, ScreenRect, ImageRect, GraphicsUnit.Pixel)
        End Sub


    Parar diminuir a quantidade de códigos no GameLoop, crie estas duas subs.

    DesenharNome
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawname

    DesenharFPS
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawfps

    Movendo o personagem;
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2moveup

    Quando DirUp é verdadeiro o código entre ele é executado.
    Verifica se a tecla para cima foi pressionada.
    Se foi pressionada, muda a direção do personagem para cima.

    Se o personagem ainda não estiver no topo do form, ele pode andar.
    Se estiver no topo do form ele não pode.

    Se a tecla para cima não foi pressionada, personagem não se moverá.

    Esta regra vale para todo o restante da sub.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2movedown

    Inicialização das imagens, nome e posição do personagem.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2loadsprite

    Inicialização do jogo e incremento de posição.
    Criando jogos em VB.NET - Movimento e animação do personagem I Move2initincr
    DragonicK
    DragonicK
    Experiente
    Experiente


    Mensagens : 542
    Créditos : 81

    Ficha do personagem
    Nível: 1
    Experiência:
    Criando jogos em VB.NET - Movimento e animação do personagem I Left_bar_bleue0/0Criando jogos em VB.NET - Movimento e animação do personagem I Empty_bar_bleue  (0/0)
    Vida:
    Criando jogos em VB.NET - Movimento e animação do personagem I Left_bar_bleue30/30Criando jogos em VB.NET - Movimento e animação do personagem I Empty_bar_bleue  (30/30)

    Criando jogos em VB.NET - Movimento e animação do personagem I Empty Re: Criando jogos em VB.NET - Movimento e animação do personagem I

    Mensagem por DragonicK Qua Jan 25, 2012 10:33 pm

    DesenharPersonagem;

    Lembre-se esse código é executado no mínimo umas 30 vezes por segundo.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawperson1

    Primeiro, pega a animação do personagem a partir da direção.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawperson2


    O que está dentro do primeiro bloco vermelho, só será executado quando o personagem estiver em movimento, ou seja, Personagem.Moving = True.

    O bloco verde é o movimento do personagem. A cada 5 milésimos de segundos, o personagem irá incrementar na sua direção +2 pixels.

    Step quer dizer Etapa, nossa animação tem 2 etapas, passo direito e passo esquerdo.

    Quando a Etapa for 0, ele ira desenhar a próxima animação da Sprite. Já vimos isso em Calcular Sprites.

    Quando o personagem está de frente para nós, o número da animação é 4. Etapa 0 ele irá somar mais 1 número (4 + 1= 5, olhe naquela imagem que eu postei no outro tópico Calcular Sprites).

    Quando se passar 150 milésimos de segundos, ele irá mudar para a etapa 1. Na etapa 1 ele irá subtrair 1 número (4 - 1= 3).

    E assim sucessivamente, enquanto o jogador estiver se movendo, ele irá mudar a animação a cada 150 milésimos de segundos nos dando a impressão de animação.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2drawperson3

    Código:
    DesenharImagem(Personagem.Sprite, New Rectangle(Personagem.Position.X, Personagem.Position.Y, Personagem.Size.Width, Personagem.Size.Height), _
                          New Rectangle(Personagem.Anim * 32, 0, Personagem.Size.Width, Personagem.Size.Height))

    Agora finalizo a aula com o GameLoop;

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2gameloop

    Agora aqui, a primeira coisa é verificar os eventos do teclado. Chamamos a sub PlayerMove. Não vou dizer mais, pois já viram a aula passada e devem entender.

    Enfim ...

    DesenharPersonagem - Desenha o personagem (ah, é memo?).
    DesenharNome - Desenha o nome do personagem.
    DesenharFPS - E um draw no FPS.

    Novamente, já ía me esquecendo de como dar a inicialização no form.

    Criando jogos em VB.NET - Movimento e animação do personagem I Move2formload

    Projeto Aula

      Data/hora atual: Ter Mar 19, 2024 5:54 am