Entrar
Últimos assuntos
» player não consegue andarpor 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
#IAJ Aula 03 - Saúde do player e inimigo Top Down
+7
heroidahora
thelack
LCS
Kisuk_kun
Lcastro1997
SIGILOSO
All-x
11 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
#IAJ Aula 03 - Saúde do player e inimigo Top Down
INTRODUÇÃO A JOGOS
Aula 03 - Saúde do player e inimigo
(Atualizado 08/02/2015)
Depois de termos aprendido fazer a movimentação do player e faze-lo atirar, vamos fazer um sistema de saúde para o player, inimigos simples, itens e níveis. Usaremos os códigos de tiro da engine da aula passada.
Não leia esta aula sem ter olhado as anteriores. Ok?
Antes de começar baixe esta engine:
Saúde:
Em quase todo jogo existem barras para mostrar a saúde do player, as populares healthbars (barras de saúde).
Para podermos manipula-la usamos uma variável. Quando existe uma unica instância de um objeto (Player) usamos uma variável global. Mas quando existem varias instâncias de um mesmo objeto usamos uma variável local (inimigos).
Para o player que é um só usamos a variável global health que ja é de padrão do GM. Seu valor inicial é setado em 100 quando o jogo começa, mas queremos que toda vez que uma room seja iniciada o health seja 100, então vamos ao objeto controle e colocamos no evento Others-->Room start:
- Código:
//Saúde inicial é 100
health = 100
Assim toda vez que a room reiniciar ou começar, a saúde do player será 100. Lembrando que o objeto controle deve estar em todas as roons em que o player esta pois ele vai controlar a pontuação, eventos de desenhos e etc.
Agora faremos com que se o player colidir com o inimigo perda vida. Va no objeto player e no evento Collision escolha o objeto inimigo e coloque o seguinte código:
- Código:
//tira -2 de saúde
health -= 2
Assim enquanto o player estiver colidindo com o inimigo serão tirados -2 do health. E quando o health acabar? Ele continuará em números negativos se não fizermos uma limitação.
Vamos ao evento Step do objeto controle agora, para fazermos uma limitação:
- Código:
//não diminui pra menos de zero
if health <= 0{health = 0}
//não passa de 100
if health > 100{health = 100}
Assim o health é limitado entre 0 e 100.
Agora faremos o health aumentar coletando um item. Va ao objeto player e no evento Collision escolha o objeto add_saude e coloque o código:
- Código:
//adiciona 25 à saúde
health += 25
Como o visto o health aumenta +25 e mesmo que passe de 100 ele retornará a 100 porque fizemos uma limitação.
Agora vamos ao objeto add_saude e no evento Collision escolhermos o objeto player e colocamos o código:
- Código:
//quando o player coledir com este objeto ele será destruido
instance_destroy()
Pronto, agora vamos pintar essa barra na tela do jogo. Vamos ao evento Draw do objeto controle e la adicionar o código:
- Código:
draw_healthbar(100,10,200,20,health,c_black,c_red,c_lime,0,1,0)
//Legenda:
//x1: posição da lateral esquerda da barra
//x2: posição da lateral direita da barra
//y1: posição da linha superior da barra
//y2: posição da linha inferior da barra
//Amount: variável que estamos usando (no caso, health)
//backcol: cor do fundo da barra
//mincol: cor que significa pouca saúde (vermelha)
//maxcol: cor que significa boa saúde (verde)
//direction: direção para onde vai aumentando a saúde (0=direita, 1=esquerda, 2=baixo e 3=cima)
//showback: mostrar fundo da barra (1 significa sim e 0 significa não)
//showborder: mostrar borda da barra (1 significa sim e 0 significa não)
Uffa! Terminamos a parte mais importante do player. Mas ainda falta muito, quer tomar uma água? vai la! Isso vai demorar um pouco mais.
Ja descansou? Agora vamos ao sistema de vidas, que por padrão ja temos a variável lives. E como queremos 3 vidas somente quando o jogo começar va ao evento Others-->Game start e coloque o código:
- Código:
//Começa o jogo com 3 vidas
lives = 3
Agora temos que pensar em que momento o player vai morrer. Certamente quando a saúde dele ser zero, então voltemos à aquela verificação que fizemos no Step do objeto controle e mudamos o código que verifica se é menor que zero pra este:
- Código:
if health <= 0
{
//resetando a room
room_restart()
//enche a saúde novamente
health = 100
//retira uma vida
lives -= 1
}
E para aumentar o número de vidas vamos ao objeto player no evento Collision e selecionamos o objeto add_vida e colocamos o seguinte código:
- Código:
//adiciona mais uma vida
lives += 1
Depois no objeto add_vida vamos no evento Collsion e selecionamos o objeto player e colocamos o código:
- Código:
//quando o player coledir com este objeto ele será destruido
instance_destroy()
Agora para vermos o número de vidas vamos ao objeto controle e no evento Draw adicionamos o seguinte código:
- Código:
draw_text(10, 35, "Vidas: " + string(lives))
//Legenda:
//x: posição x do texto
//y: posição y do texto
//str: texto que deve vir entre apóstrofos, mas queremos adicionar um valor númérico(real), que é uma variavel
//Então adicionamos o sinal de + porque estamos adicionando outro texto, e então fazemos a conversão de número em
//texto dessa maneira string(variavel), senão fizermos essa conversão dará um erro, pois lives(número) iria ser lido com texto
Game over:
E quando as vidas acabarem? vamos fazer mais uma checagem no Step do controle:
- Código:
if lives == 0
{
//vai para a room game_over
room = game_over
}
Depois va no obj_game_over e adicione o seguinte código no evento Key_pressed--> Enter:
- Código:
//reseta o jogo
game_restart()
Inimigo:
Agora vamos fazer uma movimentação bem simples para os inimigos. No objeto Inimigo no evento Create coloque:
- Código:
//começará em velocidade vertical 5, ou seja indo para baixo.
vspeed = 5
Na colisão do inimigo com o bloco coloque:
- Código:
//velocidade vertical será invertida, ou seja vai rebater
vspeed = -vspeed
Agora para o inimigo ser destruido quando levar um tiro, va no evento de colisão do inimigo com a bala e da bala com o inimigo coloque:
- Código:
//destrói o objeto
instance_destroy()
Coloque este código na colisão do bala com o bloco também.
fases:
Para passar de fase faremos o seguinte, depois de não ter nenhum inimigo na room passa para a próxima fase. Então no objeto controle adicione este código no Step:
- Código:
//se o número de inimigo for zero
if instance_number(inimigo) == 0
{
//passa para próxima room
room_goto_next()
}
Enfim terminamos essa aula. Espero ter ensinado bem e que vocês tenham entendido XD. Fico devendo a saúde do inimigo para a próxima aula. Vlw? E também eu tive que resumir bem esta aula para não ficar muito extensa e chata, por isso qualquer dúvida sobre esta aula, pergunte. Ok?
Se não conseguiu seguir a aula baixa a engine completa:
Até a próxima aula!
Próxima aula: saúde do inimigo
FLWS!
Última edição por Alex FC em Seg 09 Fev 2015, 19:50, editado 17 vez(es) (Motivo da edição : Atualização)
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Ótima aula AlexFC!!
Continue com os seus ótimos trabalhos,ajudando mtos "desesperados"!! XD
Parabéns kara
Continue com os seus ótimos trabalhos,ajudando mtos "desesperados"!! XD
Parabéns kara
SIGILOSO- Games Ranking :
Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Reputação : 39
Número de Mensagens : 2267
Prêmios :
x 0 x 2 x 0
x 4 x 2 x 1
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
mto bom!!!
Cara, ontem deu tudo certo, mais hoje, hora que fui testar deu esse erro:
___________________________________________
ERROR in
action number 1
of Step Event
for object player:
Error in code at line 31:
if keyboard_check_pressed(vk_space) && global.balas>0
at position 48: Unknown variable balas
o que k é?
Cara, eu baixei a engine copleta, coloquei no meu que eu tava fazendo, mais continuo o mesmo erro do meu ultimi post:
ERROR in
action number 1
of Step Event
for object player:
Error in code at line 31:
if keyboard_check_pressed(vk_space) && global.balas>0
at position 48: Unknown variable balas
EDIT por rafasgb: Cuidado para não postar 3 vezes seguidas, isso é triple post! Vou ser obrigado a te dar warn.
Cara, ontem deu tudo certo, mais hoje, hora que fui testar deu esse erro:
___________________________________________
ERROR in
action number 1
of Step Event
for object player:
Error in code at line 31:
if keyboard_check_pressed(vk_space) && global.balas>0
at position 48: Unknown variable balas
o que k é?
Cara, eu baixei a engine copleta, coloquei no meu que eu tava fazendo, mais continuo o mesmo erro do meu ultimi post:
ERROR in
action number 1
of Step Event
for object player:
Error in code at line 31:
if keyboard_check_pressed(vk_space) && global.balas>0
at position 48: Unknown variable balas
EDIT por rafasgb: Cuidado para não postar 3 vezes seguidas, isso é triple post! Vou ser obrigado a te dar warn.
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Kisuk_kun
Cuidado ao reviver tópicos muito antigos apenas para comentários como este, isso é contra as regras do fórum.
Alertado
Cuidado ao reviver tópicos muito antigos apenas para comentários como este, isso é contra as regras do fórum.
Alertado
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
o dowload não funcioa o que faço tem como faze sem fazer download
thelack- Data de inscrição : 11/01/2012
Reputação : 1
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
cara to com um problema e nao consigo resolver. Quando inicio o jogo nao aparece a barra de saude e nem o numero de life. O objControlador esta na roon. pode me ajudar?
heroidahora- Data de inscrição : 13/06/2012
Reputação : 1
Número de Mensagens : 1
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Aula atualizada - 20/10/12:
- Melhora na grafia e explicação;
- Atualização das engines.
Ps: As próximas aulas serão atualizadas em breve.
FLWS!
- Melhora na grafia e explicação;
- Atualização das engines.
Ps: As próximas aulas serão atualizadas em breve.
FLWS!
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
To com um problema.
Quanto eu coloco o código da barra de lives aparece na room mas quando eu vejo o objeto que há o código de barra desaparece!!!
Quanto eu coloco o código da barra de lives aparece na room mas quando eu vejo o objeto que há o código de barra desaparece!!!
skatemilx- Data de inscrição : 27/11/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Veja que você deve colocar o código no objeto controle, esse objeto só servirá para desenhar coisas na tela. Ele deve estar em todas as fases e ele é invisivel mesmo.
Se colocou esse código no se player, certamente ele vai desaparecer. Pois, estara usando o evento Draw. Assim sua sprite some, e só reaparece se você redesenha-la no evento Draw.
Por isso pedi para que crie um objeto controle. Um objeto que não aparece, mas desenha suas vidas, pontuação e etc.
Espero ter esclarecido .
FLWS!
Se colocou esse código no se player, certamente ele vai desaparecer. Pois, estara usando o evento Draw. Assim sua sprite some, e só reaparece se você redesenha-la no evento Draw.
Por isso pedi para que crie um objeto controle. Um objeto que não aparece, mas desenha suas vidas, pontuação e etc.
Espero ter esclarecido .
FLWS!
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Cara,como colocar a barra de vida na posição que desejar?
BrunoMotaSantos- Data de inscrição : 28/09/2013
Reputação : 1
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Olhe o código de desenhar a barra. Os quatro primeiros argumentos formam a barra:
FLWS!
Só modificar os 4 primeiros argumentos ao teu gosto.Eu escreveu:Pronto, agora vamos pintar essa barra na tela do jogo. Vamos ao evento Draw do objeto controle e la adicionar o código:Uffa! Terminamos a parte mais importante do player. Mas ainda falta muito, quer tomar uma água? vai la! Isso vai demorar um pouco mais.
- Código:
draw_healthbar(100,10,200,20,health,c_black,c_red,c_lime,0,1,0)
//Legenda:
//x1: posição da lateral esquerda da barra
//x2: posição da lateral direita da barra
//y1: posição da linha superior da barra
//y2: posição da linha inferior da barra
//Amount: variável que estamos usando (no caso, health)
//backcol: cor do fundo da barra
//mincol: cor que significa pouca saúde (vermelha)
//maxcol: cor que significa boa saúde (verde)
//direction: direção para onde vai aumentando a saúde (0=direita, 1=esquerda, 2=baixo e 3=cima)
//showback: mostrar fundo da barra (1 significa sim e 0 significa não)
//showborder: mostrar borda da barra (1 significa sim e 0 significa não)
FLWS!
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Mais cara,fiz isso mais não está mudando a posição e sim o tamanho!
BrunoMotaSantos- Data de inscrição : 28/09/2013
Reputação : 1
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
São quatro posições caro BrunoMotaSantos. Elas determinam o tamanho também. Veja a imagem a seguir e compreenda:
Repare que tu determina a posição das laterais da barra.
Espero que tenha ajudado.
FLWS!
Repare que tu determina a posição das laterais da barra.
Espero que tenha ajudado.
FLWS!
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Bom cara,infelizmente não estou entendendo mesmo!
Eu queria colocar a barra no canto inferior direito,mais não estou conseguindo..Como eu faço?
Eu queria colocar a barra no canto inferior direito,mais não estou conseguindo..Como eu faço?
BrunoMotaSantos- Data de inscrição : 28/09/2013
Reputação : 1
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
o.O
Ok, vamos checar algumas coisas:
- Coloque o código no evento Draw.
- Certifique-se de que este objeto esteja na room.
- Tente com esse código:
Valeu?
FLWS!
Ok, vamos checar algumas coisas:
- Coloque o código no evento Draw.
- Certifique-se de que este objeto esteja na room.
- Tente com esse código:
- Código:
draw_healthbar(32,32,128,64,health,c_black,c_red,c_lime,0,1,0);
Valeu?
FLWS!
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Ok cara,não funcionou muito bem,mais obrigado pela atenção e vou retomar as aulas!
BrunoMotaSantos- Data de inscrição : 28/09/2013
Reputação : 1
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
- Código:
draw_healthbar(100,10,200,20,[...]
Por exemplo, se x1 vale 100, e x2 vale 200, a largura deste draw será 100, pois estamos montando desde da posição 100 até a posição 200. Em outras palavras, a distancia da posição x1 até a x2 é 100, pois x2-x1 (200-100) vale 100.
Mesma coisa para o eixo y, que nesse caso, tem altura 10 (y2 - y1, 20 - 10).
Agora, como tu quer que fique no canto inferior direito da tela, você terá que ajustar ate chegara posição que você quer, por exemplo:
- Código:
draw_healthbar(520,400,620,420,health,c_black,c_red,c_lime,0,1,0);
Re: #IAJ Aula 03 - Saúde do player e inimigo Top Down
Boa noite, estou com um pequeno problema e não sei como resolver.
if health <= 0
{
//resetando a room
room_restart()
//enche a saúde novamente
health = 100
//retira uma vida
lives -= 1
}
nessa parte do codigo, sempre que meu personagem colide com o objeto e a vida dele desce, ao invés de descer e descontar a vida, ele desce muito rapido e não descontas as vidas e quando eu tiro o room _start() ele funciona perfeitamente, saberia como me ajudar ?
if health <= 0
{
//resetando a room
room_restart()
//enche a saúde novamente
health = 100
//retira uma vida
lives -= 1
}
nessa parte do codigo, sempre que meu personagem colide com o objeto e a vida dele desce, ao invés de descer e descontar a vida, ele desce muito rapido e não descontas as vidas e quando eu tiro o room _start() ele funciona perfeitamente, saberia como me ajudar ?
ArturJoeJAe- Games Ranking :
Data de inscrição : 02/02/2021
Reputação : 0
Número de Mensagens : 4
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
- Unity
- C#
Tópicos semelhantes
» #IAJ Aula 04 - Saúde do inimigo
» [Resolvido]Como fazer o Inimigo atacar se estiver perto do player e o player perder vida
» como fazer Combate entre PERSONAGEM X INIMIGO com sistema de ataque , e barras de saude para os dois?
» como crio um inimigo 3d que video aula por favor
» Inimigo e Player?
» [Resolvido]Como fazer o Inimigo atacar se estiver perto do player e o player perder vida
» como fazer Combate entre PERSONAGEM X INIMIGO com sistema de ataque , e barras de saude para os dois?
» como crio um inimigo 3d que video aula por favor
» Inimigo e Player?
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos