Entrar
Últimos assuntos
» Zombie Revengerpor theokof98 Hoje à(s) 17:10
» Tamanho da fonte
por Lucas paz Qui 21 Set 2023, 09:20
» Venha conferir o Espaço GMBR no Discord!
por Lucas paz Seg 18 Set 2023, 11:50
» Animação do sprite muito rápida no draw gui
por PedroX Seg 18 Set 2023, 09:50
» mod joiplay
por lhit. Dom 10 Set 2023, 18:02
» [dúvida] Occlusion culling (GMS)
por lhit. Dom 10 Set 2023, 18:00
» Evoluship [0.1.3] (DevLog)
por Bruno_Ribeiro Sex 08 Set 2023, 17:56
» Block Room
por Joton Qui 24 Ago 2023, 20:37
» Quanto tempo...
por SoMateus Dom 13 Ago 2023, 01:09
» Zodiac - Hellish Memory [0.1.2.7]
por theguitarmester Qui 10 Ago 2023, 10:20
» alguém sabe como colocar colisão nos obstáculos
por GabrielXavier Qua 09 Ago 2023, 15:15
» SISTEMA DE ITEM FLUTUANTE
por ArturJoeJAe Ter 08 Ago 2023, 23:23
» se a variavel não for true alguma coisa acontecer
por cacique_Gamerr Ter 08 Ago 2023, 16:00
» Retorno da GMBR!!!
por polosam Sáb 05 Ago 2023, 15:44
» Os códigos não estão funcionando
por JOZ. Qua 02 Ago 2023, 16:49
» [0.0.3] Frightorix
por Fuzenrad Ter 01 Ago 2023, 15:44
» [Resolvido]Como criar um evento com base no tempo de um cronômetro?
por GabrielXavier Ter 25 Jul 2023, 08:25
» Gravamos Shorts/Tiktok sobre seu jogo
por JOZ. Sex 21 Jul 2023, 12:19
» #IAJ Aula 03 - Saúde do player e inimigo Top Down
por ArturJoeJAe Qui 20 Jul 2023, 22:03
» [+18] Zodiac Hentai - Hellish Memory
por theguitarmester Seg 17 Jul 2023, 21:38
» Como traçar linhas
por Limalokão Qui 13 Jul 2023, 15:07
» SEQUENCIAS
por Pit Bull Dom 09 Jul 2023, 15:05
» Apostila do game maker 8.0 (português)
por Brunaomm23 Qua 05 Jul 2023, 13:25
» iniciando no 3d
por Brunaomm23 Seg 03 Jul 2023, 19:44
» andar balançando
por KanekiZLF Qui 29 Jun 2023, 15:55
#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#

» #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
|
|