Suporte no desenvolvimento de jogos


    2 - Melhorando o mapa!

    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda

    Mensagens : 1965
    Créditos : 362
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    2 - Melhorando o mapa! Left_bar_bleue0/02 - Melhorando o mapa! Empty_bar_bleue  (0/0)
    Vida:
    2 - Melhorando o mapa! Left_bar_bleue30/302 - Melhorando o mapa! Empty_bar_bleue  (30/30)

    2 - Melhorando o mapa! Empty 2 - Melhorando o mapa!

    Mensagem por Paulo Soreto em Sex Nov 24, 2017 5:34 pm

    Para os gráficos do jogo estou utilizando os desse link:
    Colony sim assets

    Aquele mapa inteiramente verde é bem ruim então vamos utilizar alguns gráficos da net pra melhorar o projeto. Abra o script Map, nele precisamos editar o método draw_ground. Até então nós criamos uma sprite e desenhamos um belíssimo quadrado verde preenchendo toda a tela. Agora nós precisamos "cortar" uma determinada área do tileset que baixamos e desenhá-lo na tela.

    Mas espera um pouco, nós apagamos o módulo Cache do RPG Maker e agora como que vamos carregar as imagens? A classe Bitmap recebe como argumento na inicialização o caminho para o arquivo que desenha carregar ao invés da largura e altura do bitmap. Eu coloquei os gráficos dentro da pasta Tilesets dentro da pasta Graphics. Nós precisamos substituir a criação do bitmap vazio pelo carregamento da imagem e precisamos também apagar o conteúdo do método draw_ground.

    O código fica da seguinte forma:
    2 - Melhorando o mapa! OhGgg3F
    E o resultado:
    2 - Melhorando o mapa! 1ZuKzpU
    Mas não é isso que queremos, precisamos desenhar apenas uma parte do tileset e não ele completo. Para isso precisamos usar o método strech_blt, se formos na ajuda do RPG Maker lá tem isso:
    2 - Melhorando o mapa! DCmPgun
    Ou seja, esse método recebe respectivamente como argumentos:
    dest_rect: Local dentro da sprite onde a imagem "cortada" será desenhada.
    src_bitmap: A imagem que queremos desenhar.
    src_rect: Local dentro da IMAGEM que queremos cortar.
    opacity: Opacidade da imagem ao desenharmos.

    Lembrando que rect vem rectangle e as propriedades que ele possui, segundo a ajuda do RM são: x, y, largura e altura.
    Eu não vou ficar parando pra detalhar cada classe por que toma muito tempo, essas coisas vocês mesmos podem pesquisar.

    Precisamos agora fazer uma pequena mudança no código anterior, a linha onde tem @ground.bitmap atualmente carrega a imagem do tileset, vamos carregar essa imagem em outra variável e o @ground.bitmap volta a ter o valor que tinha na aula passada, ok? O código fica assim:
    2 - Melhorando o mapa! Q43XTYp

    Agora que já sabemos tudo que precisamos pra cortar e desenhar uma parte da imagem no jogo nós podemos ir para o código, que fica da seguinte forma:
    2 - Melhorando o mapa! BgANF3v
    Só que... só desenhou um tile :/
    Pra preenchermos o mapa com tiles precisamos usar um laço de repetição (o que for melhor pra você). Nesse caso eu optei por usar o for. Lembrando que precisamos mudar o valor do dest_rect para cada tile que formos desenhar para que tudo saia como planejado. O código ficou da seguinte maneira:
    2 - Melhorando o mapa! WFblgft
    E o resultado final é o seguinte:
    2 - Melhorando o mapa! BFmABw4
    O código final é: https://pastebin.com/9DtNXD6F
    Nota: Eu usei o valor 16 pois é a largura de cada tile e isso varia de acordo com o tileset.


    _________________
    2 - Melhorando o mapa! FwYnoXI

      Data/hora atual: Ter Nov 19, 2019 5:15 am