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

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Aula 9 – bater em você ate você morrer

+6
TiagoBonadio
CPinheiro
Metal_X
Hitsugaya26
Dancity
reddragon
10 participantes

Ir para baixo

Aula 9 – bater em você ate você morrer Empty Aula 9 – bater em você ate você morrer

Mensagem por reddragon Ter 24 Fev 2009, 16:41

Galera nosso jogo como mo nosso jogo será um jogo RPG o personagem terá de ter um ataque baseado em uma ficha e também leveis e experiência e também faremos uma vida para nosso inimigo.

Mas antes para deixar nosso jogo um pouco mais bonitinho vamos criar nele um tileset e um background. Tileset do inglês peças e background do inglês fundo.

como as imagens são muito grandes eu as coloquei em um zip:

http://www.mediafire.com/download.php?kuuwcw22mon

Carregue eles na pasta Background:

E configure o tileset desta forma.

Aula 9 – bater em você ate você morrer 9mloxwfaz5vn1732z7v8

E pode deixar o background na configuração que veio e o nomeio de bg_montanhas.

Os dois foram emprestados de outro programa que não vem ao caso.

Vamos agora colocar nossos tileset em nossa room, na aba tiles selecione o nosso tileset e apertando em cima dele você ira trocar o desenho selecionado. Agora clicando na room você verá que esta adicionando desenhos na room. Eu montei algo assim:

Aula 9 – bater em você ate você morrer 5eun5iryu0pnot6qxxjz

Se você testar agora verá que ficou bonito, mas o chão ainda aparece seria interessante que ele não aparecesse, então para fazer isso é fácil, vá até o obj_chao e desmarque a opção visible e olhando na room ele não sumira, mas quando rodarmos nosso jogo ele não aparecera mais.

E nosso background deve ser colocado assim no fumdo:

Aula 9 – bater em você ate você morrer Q53d6mvccnb9cmxjqot

Agora que nosso jogo já esta mais bonito vamos colocar o nosso primeiro recurso RPG o ataque e para isso vamos criar mais 1 obj chame ele de obj_criador_vars ele ira criar nossas vars globais que irmos usar.

Por enquanto iremos criar só o ataque e para isso no obj_criador_vars no evento create coloque um esecute code e nele o seguinte script:

Código:
globalvar atk {atk = 1}

instance_destroy()

Quando creiamos uma var global ela não é criada se atribuindo um valor, para isso temos de fazer de em outro lugar e seria entre { } então o que fazemos é criar nosso var e logo após atribuir um valor a ela.

coloque nosso obj na room e deixeo la em qualquer canto.

E também eu acho que para atacar e retirar vida de nosso inimigo, nosso inimigo terá de ter uma vida então em nosso inimigo vamos colocar o seguinte script no evento create no a baixo de nossas vars:

Código:
//vars rpg
vida = 5

Agora que já temos um ataque e nosso inimigo já tem uma vida vamos o fazer perder sua vida quando atacado para isso modifiquemos o script do evento collision com o obj_player:

Código:
//verifica se o player esta atacando
if obj_player.atacando = true{
//modify as vars
vida -= atk
//verifica se o inimigo tem vida ainda se não ele tem de morrer
if vida <= 0{effect_create_above(ef_explosion,x,y,0,c_red);instance_destroy()}

}

O que foi feito? Foi adicionado um script que desconta da vida o ataque e identifica se a vida é menor ou igual a 0 e se for ele destrói o inimigo. Mas se for testado agora você me dirá: Mas adiantou nada o inimigo continua matando o inimigo em uma pancada só! Ai eu te responderia: Não é bem em uma pancada só.

Na verdade o inimigo demora 5 steps para ser morto em cada step ele é descontado 1 de vida e como nosso ataque demora aproximadamente 12 steps porque ele tem 3 imagens e cada imagem é vista por 4 steps então 4 x 3 = 12 com isso estamos matando nosso inimigo em uma pancada só mesmo.

Agora temos de definir então que ele já apanhou e que ele não pode ser atacado novamente enquanto o ataque não for finalizado para isso vamos criar mais uma var na seção RPG.

Código:
//vars rpg
vida = 5
apanhando = false

E em nosso código a colocamos junto com o que identifica se o player esta atacando para que ela identifique se eu já apanhei porque se já é para eu não apanhar mais:

Código:
//verifica se o player esta atacando e se o inimigo ainda não apanhou
if obj_player.atacando = true and apanhando = false{
//modify as vars
apanhnado = true
vida -= atk
//verifica se o inimigo tem vida ainda se não ele tem de morrer
if vida <= 0{effect_create_above(ef_explosion,x,y,0,c_red);instance_destroy()}

}

Mas nova mente testando você vai me dizer: Mas o inimigo agora não morre mais. Porque após o primeiro ataque a var apanhando é colocada em true e seu valor não retorna para poder apanhar novamente.

Entretanto agora surge um pequeno problema porque se simplesmente fizemos isso:


Código:
//verifica se o player esta atacando e se o inimigo ainda não apanhou
if obj_player.atacando = true and apanhando = false{
//modify as vars
apanhando = true
vida -= atk
//verifica se o inimigo tem vida ainda se não ele tem de morrer
if vida <= 0{effect_create_above(ef_explosion,x,y,0,c_red);instance_destroy()}

}else{apanhando = false}

Ou isso:


Código:
//verifica se o player esta atacando e se o inimigo ainda não apanhou
if obj_player.atacando = true and apanhando = false{
//modify as vars
apanhando = true
vida -= atk
//verifica se o inimigo tem vida ainda se não ele tem de morrer
if vida <= 0{effect_create_above(ef_explosion,x,y,0,c_red);instance_destroy()}

}
//se o player não estiver atacando o inimigo poderá apanhar
if obj_player.atacando = false {apanhando = false}

Existem dois problemas nesses scrits o 1º faria com que o inimigo voltasse a morrer com um golpe só, mas a cada dois ciclos porque no primeiro ele iria descontar a vida e tornara apanhando true e no segundo ele tornaria apanhando false e assim podendo perder vida no próximo step, e no segundo ele ate funcionaria às vezes somente se o player enquanto não estivesse atacando encosta se no inimigo para ele poder executar o código e assim modificar a var. Do contrário se o player não encosta enquanto o player não estivesse atacar e só encostasse enquanto o player estivesse atacando o inimigo não perderia vida.

E nessas horas que é bom dizer: Ahhh e agora quem poderá me ajudar?

Mas eu tenho uma solução para esse problema, pegue o pedaço do 2º script que verifica se o ataque do player é false e recorte ele e o coloque junto ao evento step do inimigo logo a baixo da gravidade e pronto ta feito. Isso fará com que mesmo sem encostar-se ao player a var apanhando volte a ser false ao termino de nosso ataque.

Promessa feita, promessa cumprida, mas agora vamos ao algo mais:

Vamos montar duas coisas a primeira será uma barra de vida para nosso inimigo e a segunda será um número que surgira em cima do inimigo quando atacado equivalente ao valor de seu ataque.

Bom já existe bastante tutorial no cite ensinando a criar uma barra de vida, mas eu irei montar o meu também.

O código será o seguinte:

draw_healthbar(x1,y1,x2,y2, var da vida, cor fundo, cor vazio, cor cheia, direção, fundo, borda)

x1,y1,x2,y2 = as coordenadas de onde ira aparecer sua barra de vida x1 y1 é o começo canto esquerdo superior da barra e o x2 y2 é o fim canto direito inferior.

Var da vida = a var que carrega o valor da vida de seu inimigo no casso desta aula a var vida

Cor fundo = a com do fundo e da borda.

Cor vazia = cor que vai ficar quando vazia

Cor cheia = cor quando estiver cheia

Obs.: a barra não fica com a cor de cor vazia, mas sim quando cheia ela fica 100% com a com de cheia e vai trocando com a cor vazia quanto menor ela for.

Direção = que a barra vai diminuir 0 e da direta para esquerda.

Fundo = se 0 ou false o fundo não aparece e se 1 ou [color:657a=#color]true o fundo aparecera.

Borda = se 0 ou false a borda não aparece e se 1 ou true a borda aparecera.

Agora vamos criar um evento o draw do inglês desenho, é o evento onde que coloca os sprites na tela e também onde podemos escrever as coisas. Mas o criemos no botão add evente / Draw e nele coloque um execute code e colocaremos o seguinte script:

Código:
//desenha a barra de vida
draw_healthbar(x - 20,y - 35,x + 20,y - 30,vida,c_black,c_red,c_green,0,true,true)

Partindo do ponto x y do obj fizemos uma barra que terá 40 de largura e 5 de altura no eixo x ele vai de – 20 a + 20 dado 40 de largura e no eixo y vai de – 35 a – 30 dado 5 de altura, colocamos a var vida para ser a vida, e o fundo é preto, a com vai de verde cheia ate vermelha vazia, ela esvazia de direta para esquerda e aparece fundo e borda.

Testando agora você ficara desesperado, e me perguntara: Cadê o desenho do inimigo, e a barra de vida está sempre quase no fim?

O desenho do inimigo some porque até agora não tínhamos colocado o evento draw, quando não existe um evento draw no obj ele mostra o sprite colocado nele sem precisar de script para isso, mas com o evento draw você é obrigado a colocar um script para mostrar o desenho também e o script é esse:

draw_sprite(sprite,imagem,x,y)

Sprite = o sprite que deve aparecer.

Imagem = é a sub imagem do sprite criado se ele tiver mais de uma imagem.

X,Y = a coordenada que a imagem ira aparecer.

Bom agora é só colocar logo a baixo do script da barra de vida o seguinte script:

Código:
//desenha a imagem do inimigo
draw_sprite(sprite_index,image_index,x,y)

Colocamos o desenho que esta selecionado no sprite e também a sub imagem que o obj esta selecionado e também bem nas coordenadas do obj.

Agora testando vera que voltou a imagem do inimigo. Happy

Mas a barra ainda esta pequena, por quê?

Simples o script que gera a barra de vida aceita um valor de 0 a 100 e pra adequarmos o valor da vida do inimigo com o qual é mostrado na barra devemos fazer uma conta a regra de 3.

E como fazer ela no GM?

Em minha aula 5 eu fiz uma regra de 3 mas não em GML mas agora vamos.

Pense assim:

Aula 9 – bater em você ate você morrer P2glcs8jxer9x6jyny9e

Em GML:

resultado = vida * 100 / 5

Resultado é a var que ira armazenar a vida na outra proporção, vida é a vida atual, 100 porque é a outra proporção que queremos deixar, e 5 porque é o máximo de vida.

Agora no evento create adicione mais uma var as vars RPG:

Código:
barra_vida = 0

No step logo a baixo da gravidade e do script de identificação de ataque do player coloque o seguinte comando:

Código:
Barra_vida = vida * 100 / 5

E no evento draw substitua a var vida pela var barra_vida. Pronto agora a barra de vida esta certa.

Agora o dano aparecendo.

Primeiro crie um novo obj e o chame de obj_dano e adicione a ele quatro eventos um create, um alarm0, um setp e um draw:

No create:

Código:
dano = 0                //mostrara o dano tomado
pnc = false            //precisaremos dele para o script de gravidade
vspeed = -5            //para ele começar já pulando
hspeed = 0.75          //para ter um movimento na horizontal
alarm[0] = 30          //tepo até o numero sumir

No alarm0:

Código:
instance_destroy()

No evento step:

Código:
gravidade(obj_dano,0.25,pnc)

E no draw:

Código:
draw_text_color(x,y,string(dano),c_white,c_white,c_white,c_white,0.8)

X,Y = coordenadas

String(dano) = string transforma um valor em uma palavra para que possa se escrita, no caso o valor da var dano.

c_white,c_white,c_white,c_white = é a cor da nossa palavra que queremos escrever. E porque 4 c_white? Porque a palavra quando gerada no Gm tem 4 quinas e você pode alterar a cor em cada quina separadamente.

0.8 e para dar uma pequena transparência.

Agora está pronto, nosso obj_dano, mas agora faremos aparecer quando o inimigo apanha, então voltemos ao script do obj inimigo no evento de collision com o obj player e acrescenta esse script logo a baixo do modificando as var:

Código:
//criando o dano
dano = instance_create(x,y,obj_dano);
dano.dano = atk

A var dano armazena a id do novo obj que esta sendo criado e em seguida ele transforma a var dano que esta no obj criado no valor do atk do player porque foi o dano que o inimigo recebeu.

Testando você verá que agora o nosso jogo ficou bem mais interessante com uma vida e dano para nosso inimigo.

E aqui temos uma demo para baixar plelo midia file

Na próxima aula trataremos sobre uma reação de nosso inimigo para o ataque e também leveis para o player.

tutorial feito por RedDragon


Última edição por reddragon em Qua 23 Set 2009, 17:04, editado 7 vez(es)
reddragon
reddragon

Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Dancity Ter 24 Fev 2009, 20:18

poxa muito bom... Funciona no gm lite?

Cara vc é muito bom pra fazer tutos... Smile
Dancity
Dancity

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 11/01/2009
Reputação : 8
Número de Mensagens : 1340
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por reddragon Ter 24 Fev 2009, 23:18

os comandos de desenhar o sprite e o testo funciona mas os de feito de explosão não
reddragon
reddragon

Data de inscrição : 19/03/2008
Reputação : 0
Número de Mensagens : 267
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Hitsugaya26 Sáb 07 Mar 2009, 02:04

eu tento alterar o codigo tirando a explosao e so colokando pra ele se destruir e n consigo poderia passar o codigo ai ?A vida tb vc so consegue usar no pro lol! alem diiso vc fará outros tutoriais?

Obrigado
Hitsugaya26
Hitsugaya26

Data de inscrição : 01/03/2009
Reputação : 0
Número de Mensagens : 67
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Metal_X Qua 11 Mar 2009, 04:03

Vlw reddragon pelos tutorias cara! Me ajudou muito!
Soh tem uma coisa, não eh querendo ser chato mas precisa da uma melhorada no portuguesio ehauhaeuhaeuhaeuhaeuahe
Tipo, eu sei que não a muita necessidade pq aki ninguem vai ficar cobrando isso, mas eh que as vezes agente se acostumando tanto a escrever errado, que chega numa hora de fazer uma redação ou um relatoria importante, agente escreve coisa errada ehauheehauhaeuhea
E tb ajuda no entendimento do texto, pq tem algumas partes que nao da entendimento total saca...
Metal_X
Metal_X

Data de inscrição : 10/03/2009
Reputação : 0
Número de Mensagens : 3
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por CPinheiro Qua 11 Mar 2009, 06:31

Reddragon, gostei de seu tutorial, até que está bem explicado! Smile Mas acho que poderia reupar as imagens, pois iniciantes se perdem muito fácil sem elas.

Falows, man.
CPinheiro
CPinheiro

Data de inscrição : 01/06/2008
Reputação : 0
Número de Mensagens : 1015
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://supermariobrasileiro.blogspot.com

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por TiagoBonadio Ter 06 Out 2009, 15:41

cara sem as img não da pra saber como fzer no fundo e tal. se desse por favor upar elas de novo!!!
avatar
TiagoBonadio

Data de inscrição : 05/10/2009
Reputação : 0
Número de Mensagens : 199
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://animanga-games.forumeiros.com/

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por fore Qua 07 Out 2009, 09:17

pow vc bem que podia fazer uns tutos pra versão lite ai einhh kra
suas aulas são excelentes
pleasee
fore
fore

Data de inscrição : 01/10/2009
Reputação : 0
Número de Mensagens : 14
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Caçador Ter 16 Mar 2010, 19:09

Tiago, sobre o tileset, vá em Backgrounds -> e 2 cliques no background "tileset". Fazendo isso, ira abrir a janela para edita-lo. Você verá a opção EDIT BACKGROUND mais a esquerda. Abaixo dela há 3 opções. Selecione a 3ª opção e pronto.
Tambem selecione a opção TRANSPARENT pra ñ ficar o fundo azul na imagem.
Eu recomendo aumentar a TILE WIDTH e TILE HEIGHT para 32. Fica mais facil de mexer com os tiles.

Dpois vá na room e vc verá SNAP X:16 Y: 16. Mude para 32. Dpois disso é só fazer oq o Reddragon disse no tutorial! Very Happy

Espero ter ajudado
Caçador
Caçador

Data de inscrição : 10/03/2010
Reputação : 0
Número de Mensagens : 5
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Convidado Sáb 22 Set 2012, 11:42

Poh não intendi nada, Fala em qual obj tem que usar o codes.
avatar
Convidado
Convidado


Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por fernandohs2 Seg 15 Abr 2013, 00:35

as imagens estão corrompidas :\
tem como alguém upar elas?
fernandohs2
fernandohs2

Data de inscrição : 10/04/2013
Reputação : 0
Número de Mensagens : 2
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Thyago Seg 15 Abr 2013, 00:45

.O tópico tem 4 anos,e o autor faz tempo que não entra no fórum.

Tópico antigo, tópico trancado.
Thyago
Thyago

Games Ranking : Nota B

Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios : Aula 9 – bater em você ate você morrer Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 9 – bater em você ate você morrer Empty Re: Aula 9 – bater em você ate você morrer

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos