Battle Maker

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

Suporte para criação de Jogos


    GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

    jiraya
    jiraya
    Administrador
    Administrador


    Mensagens : 1299
    Credibilidade : 54

    GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG Empty GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG

    Mensagem por jiraya Sáb Jan 08, 2011 1:14 pm

    [Autor: João Neto ]
    Na 1º lição de GM RPG aprendemos a criar um movimento com Clique de mouse, no estilo dos jogos atuais, porém usando um char Isométrico.
    Muitas pessoas não tem muita noção e acham que um jogo Isométrico é um jogo na diagonal.
    Isto é verdade em relação aos gráficos, mas o que realmente muda é a proporção do movimento.
    Num jogo isométrico, o movimento na horizontal é sempre 2 vezes proporcional ao movimento na vertical, formando assim a idéia de um losango.
    Todo e qualquer movimento ou cenário nesse tipo de jogo deve seguir este padrão.
    Na aula passada eu disse que aprenderíamos sobre movimento de Mobs(Inimigos). A sigla Mob é muito usada hoje nos jogos Online, talvez pelo tamanho da palavra.
    Você já usou Paths no GM? se não, hoje será uma boa chance de ver como funciona e como criar e modificar paths usando GML.
    O que faremos será criar um Path, com GML, e fazer nosso Mob seguir o mesmo.
    Pra quem já fez jogos em RPGMaker sabe que rafemos o mesmo tipo de movimento quando se cria um evento e coloca-se nele uma rota-pré-definida.
    O uso de Paths nesse caso não precisa se limitar aos Mobs, ele pode ser usado para NPCs e objetos de cenário.
    Vamos começar.
    Antes de mais nada um detalhe: estaremos usando a mesma idéia de Sprites da aula passada. Eu ainda estou desenvolvendo a ferramenta de criação, assim que ela estiver pronta eu disponibilizarei.
    Enquanto isso, use a imagem abaixo para nosso exemplo de Mob:
    GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG Jbchr083stripinversenw0
    Crie um sprite, chame-o de Zumbi. Repita os passos de criação do Strip, como na aula passada, lembrando de deixar o ultimo quadro branco.
    GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG 63492145qg1
    Vamos exercitar a criação de um Path? Crie um novo Path na pasta, e vá clicando na tela e movendo os pontos até ficarem assim:
    GM RPG - 2º Lição - Movimento de Mobs(Inimigos) isométrico de RPG 98515406lb6
    Observe que fizemos uma elípse. na verdade esse exercício de Paths é apenas para que você saiba depois criar seus próprios paths.
    Não iremos usar este que criamos. Porque? Simples: O Path funciona na tela exatamente aonde você o criou. Se tentarmos mudar as coordenadas dele em tempo de execução, TODOS os objetos que compartilharem o path irão para aquela posição.
    Crie um script, chame-o de elipse_path, e adione nele o seguinte código:
    Código:
    X = argument0;
    Y = argument1;
    ind = path_add();
    path_set_kind(ind,argument2) //0 - Reta, 1 = Curva
    path_add_point(ind,X,Y+32,100);
    path_add_point(ind,X,Y+96,100);
    path_add_point(ind,X+80,Y+128,100);
    path_add_point(ind,X+144,Y+128,100);
    path_add_point(ind,X+224,Y+96,100);
    path_add_point(ind,X+224,Y+32,100);
    path_add_point(ind,X+144,Y,100);
    path_add_point(ind,X+80,Y,100);
    return ind;
    Observe que nos comandos path_add_point estamos colocando as posições X e Y passadas como parãmetro mais o posicionamento baseado naquele path oval que desenhamos.
    A idéia é que, para cada Tipo de Path que você crie, haja um script de criação para o mesmo, de forma que vários objetos poderão compartinhar do tipo de movimento, sem compartilhar o mesmo Path e consequentemente havendo falhas no seu jogo.
    Para já vermos a bagaça funcionando de várias formas, crie outro script, nomeie-o de circulo_path e adicione o seguinte código:
    Código:
    X = argument0;
    Y = argument1;
    ind = path_add();
    path_set_kind(ind,argument2)//0 - Reta, 1 = Curva
    path_add_point(ind,X,Y+64,100);
    path_add_point(ind,X,Y+128,100);
    path_add_point(ind,X+64,Y+192,100);
    path_add_point(ind,X+128,Y+192,100);
    path_add_point(ind,X+192,Y+128,100);
    path_add_point(ind,X+192,Y+64,100);
    path_add_point(ind,X+128,Y,100);
    path_add_point(ind,X+64,Y,100);
    return ind;
    Agora temos dois tipos de movimento para testar.
    Crie um objeto, chame-o de MOB, coloque o Sprite do Zumbi. Adicione os Eventos Create e Draw. Agora em cada um coloque assim:
    Evento Create:
    Código:
    ind = circulo_path(x,y,1);
    path_start(ind,2,1,true);
    speed = 1.0;
    image_speed=0.3;
    image_index=6;
    old_dir = 1;
    Evento Draw:
    Código:
    facing = round(direction / 45);
    if facing == 8 then facing = 0;
    direcao = (facing * 4);
    if old_dir == 1 {
        old_dir = direcao;
        image_index = direcao;
    }
    if (old_dir != direcao){
        old_dir = direcao;
        image_index = direcao;
    }
    if (round(image_index) >= direcao + 4) {image_index = direcao;}
    draw_sprite(sprite_index,image_index,x,y);
    Mas o que foi feito aqui??
    Bem, vou explicar:
    No evento Create, declaramos uma variável ind, que recebe o path criado pelo script circulo_path. Setamosas variáveis de movimento e de imagem, e criamos uma old_dir. Esta variável nos ajudará a saber se o mob mudou de direção, para podermos mudar também o seu sprite.
    No evento Draw, encontramos a direção do objeto e usamos uma divisão por 45 para obtermos 8 direções. Fazemos uma correção nos cálculos, pois precisamos do valor entre 1 e 7, Setamos a direção. Validamos se a direção mudou e se sim, mudamos novamente o seu valor, e no final fazemos a mesma jogada que foi feita com o personagem na aula passada.
    Por fim desenhamos o Sprite.
    Para testar, crie uma Room, adicione vários Zumbis em lugares diferentes e rode.
    Se todos os passos foram seguidos, seu mob vai andar lindo num movimento circular excelente. Para mudar o movimento, teste o script elipse_path no lugar do circulo.
    Agora como execício, crie seus próprios Paths. Para ter certeza do desenho que eles descreverão, crie primeiro um path atoa e desenhe nele. Anote os valores dos pontos e use-os como nos scripts que criamos.
    Algumas pessoas sempre põem dificuldade em criar, por ser mais fácil pegar pronto na Net. Eu discordo, e provo que com o Game Maker é possível fazer qualquer tipo de jogo, basta que você seja criativo e esforçado. Ninguém precisa saber tudo, até eu mesmo pesquiso as vezes para encontrar modelos de engines e adaptá-los à minha necessidade.
    Na Próxima lição: Menus Flutuantes estilo Ragnarok. Até lá.

      Data/hora atual: Qui maio 02, 2024 8:58 pm