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
[Tutorial] HUD com Corações de Health/Vida/Sangue
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tutorial] HUD com Corações de Health/Vida/Sangue
Objetivo: Fazer com que Sprites de Corações aumentem ou diminuam conforme a Vida do Heroi aumenta ou diminui.
Dificuldade: Médio (Para mim foi, pq usa a função for que é meio chatinha de mexer)
Ferramenta: GM7
Agradecimentos:
SIGILOSO (por sua tuto "Que venham as HUDs")
Alex FC (por sua "Aula 6 - Introdução a GML - For")
MATERIAL:
Qualquer coisa, pode ser um sprite de coração, ou até bolinhas ou quadradinhos. Crie algum vc mesmo no GM ;)
Se possivel mantenha o tamanho do seu sprite em 16x16, senão terá que modificar os valores respectivos ao tamanho do sprite depois.
Eu fiz um Coração no Editor do GM, com 16x16 de tamanho, centralizado em 8x8.
MODO DE PREPARO:
Primeiramente sigamos a dica do SIGILOSO do tutorial "Que venham as HUDs":
Crie um Obj, aqui nós o chamaremos de "obj_declarador", nele coloque um Evento Create com o seguinte conteúdo:
Isso vai tornar nossa variavel global.life 'fixa', de modo que não importa quantas vezes vc mude de room futuramente, ela vai conservar o valor que tinha anteriormente. (por exemplo, se vc começa o jogo com 3 corações, mas passou a 1ª fase apenas com 1, na 2ª fase você vai continuar com 1)
Obs: é importante que essa room seja a primeira da lista.
Agora crie um novo Obj, chamado obj_hud, adicione um Evento Draw nele e coloque o seguinte Piece of Code:
Crie uma nova room (que será a room1), o coloque o obj_hud nela.
E para finalizar, Crie um Script e chame-o de HUDdraw. Coloque isso nele:
Rode o Jogo e veja o que acontece
"Tá.. apareceu os corações, idai? '-' "
Calma '^_^
Antes de continuar vamos entender o código:
SE global.hearts for Igual ou Maior que 1.
Primeira Declaração:
Aqui dizemos que XX vai significar view_xview+16 (ou seja, o Eixo X da View, mais 16)
Segunda Declaração:
"Porque 16?" -- Porque é o mesmo numero que usamos na view_xview (eu acho).
"Porque +4?" -- Porque dá um total de 20, que divindindo 100 gera o produto 5. (Nesse caso, se você colocou global.life = 100 no começo do tuto, apareceram 5 corações; se colocou 30 igual eu, apareceram 3)
"Porque num colocou 20 intao seu burro?!" -- Sei lá!, GM num aceitou... ele tá neurótico hj comigo.
Terceira Declaração:
Nós dizemos aqui que XX deve aumentar em 16 até que isso aconteça.
"E como isso fez aparecer mais corações?" -- Só apareceram mais corações, porque dizemos no código abaixo demos uma ordem de draw_sprite, mas os corações foram mudando de lugar porque declaramos que XX é o valor x da view. Se tivessemos dito, por exemplo, que XX é SCORE, ele aumentaria o SCORE até ele ser maior que global.hearts*16+4... (e isso ficaria totalmente senseless, mas é só um exemplo).
Capiche?
Código a ser Executado:
É assim mais ou menos que consegui explicar o funcionamento do For como nós o usamos, para entender melhor veja a Aula 6 do Alex FC.
(desculpa a bagunça de caixas de códigos acima, é que o forum tava fazendo ela sumirem se tivessem apenas escritas... to sortudo hj ¬¬)
Para finalizar, se quiser fazer um teste de aumentar ou diminuir corações. Crie um novo Obj e chame-o de obj_controle, nele adicione um evento Step e coloque o seguinte código:
Aperte X para dimunir a vida, e C para aumentar. O ultimo trecho do código com titulo de limitador, limita a quantidade máxima de corações. Se quiser mais corações ou menos corações, altere o numero baseado em valores multiplos de 10. (10, 20, 30 ... 150, 300, etc).
É isso, espero que tenham gostado.
Não vou postar engine pq criei isso num jogo que estou desenvolvendo, e apenas isolei isso do jogo em questão para trazer a vocês
Próximo Tuto: Criando um Pause Personalizado (Sem usar show_message).
Abração! Até mais galera.
Atencionsamente, DHarrison.
Dificuldade: Médio (Para mim foi, pq usa a função for que é meio chatinha de mexer)
Ferramenta: GM7
Agradecimentos:
SIGILOSO (por sua tuto "Que venham as HUDs")
Alex FC (por sua "Aula 6 - Introdução a GML - For")
MATERIAL:
Qualquer coisa, pode ser um sprite de coração, ou até bolinhas ou quadradinhos. Crie algum vc mesmo no GM ;)
Se possivel mantenha o tamanho do seu sprite em 16x16, senão terá que modificar os valores respectivos ao tamanho do sprite depois.
Eu fiz um Coração no Editor do GM, com 16x16 de tamanho, centralizado em 8x8.
MODO DE PREPARO:
Primeiramente sigamos a dica do SIGILOSO do tutorial "Que venham as HUDs":
Crie um Obj, aqui nós o chamaremos de "obj_declarador", nele coloque um Evento Create com o seguinte conteúdo:
- Código:
global.life = 30 //Eu usei 30 porque usei apenas 3 Corações, coloque 100 depois para experimentar
room_goto(room1) //Coloque o nome da próxima room que criaremos, se vc começo um 'jogo' do zero pra fazer o tudo, será a room1
Isso vai tornar nossa variavel global.life 'fixa', de modo que não importa quantas vezes vc mude de room futuramente, ela vai conservar o valor que tinha anteriormente. (por exemplo, se vc começa o jogo com 3 corações, mas passou a 1ª fase apenas com 1, na 2ª fase você vai continuar com 1)
Obs: é importante que essa room seja a primeira da lista.
Agora crie um novo Obj, chamado obj_hud, adicione um Evento Draw nele e coloque o seguinte Piece of Code:
- Código:
{
HUDdraw(); //isso simplesmente vai fazer uma chamada ao Script HUDdraw (que faremos a seguir), com todo seu conteudo.
}
Crie uma nova room (que será a room1), o coloque o obj_hud nela.
E para finalizar, Crie um Script e chame-o de HUDdraw. Coloque isso nele:
- Código:
{
global.hearts = global.life*100/1000
if global.hearts >= 1
{
for (xx=view_xview+16; xx<global.hearts*16+4; xx+=16)
{
draw_sprite(s_hearth,0,xx,view_yview+30)
}
}
}
Rode o Jogo e veja o que acontece
"Tá.. apareceu os corações, idai? '-' "
Calma '^_^
Antes de continuar vamos entender o código:
- Código:
global.hearts = global.life*100/1000
- Código:
if global.hearts >= 1
SE global.hearts for Igual ou Maior que 1.
- Código:
for (xx=view_xview+16; xx<global.hearts*16+4; xx+=16)
Primeira Declaração:
- Código:
xx=view_xview+16;
Aqui dizemos que XX vai significar view_xview+16 (ou seja, o Eixo X da View, mais 16)
Segunda Declaração:
- Código:
xx<global.hearts*16+4;
- Código:
If xx <= global.hearts*16+4;
"Porque 16?" -- Porque é o mesmo numero que usamos na view_xview (eu acho).
"Porque +4?" -- Porque dá um total de 20, que divindindo 100 gera o produto 5. (Nesse caso, se você colocou global.life = 100 no começo do tuto, apareceram 5 corações; se colocou 30 igual eu, apareceram 3)
"Porque num colocou 20 intao seu burro?!" -- Sei lá!, GM num aceitou... ele tá neurótico hj comigo.
Terceira Declaração:
- Código:
xx+=16;
Nós dizemos aqui que XX deve aumentar em 16 até que isso aconteça.
"E como isso fez aparecer mais corações?" -- Só apareceram mais corações, porque dizemos no código abaixo demos uma ordem de draw_sprite, mas os corações foram mudando de lugar porque declaramos que XX é o valor x da view. Se tivessemos dito, por exemplo, que XX é SCORE, ele aumentaria o SCORE até ele ser maior que global.hearts*16+4... (e isso ficaria totalmente senseless, mas é só um exemplo).
Capiche?
Código a ser Executado:
- Código:
draw_sprite(s_hearth,0,xx,view_yview+30);
É assim mais ou menos que consegui explicar o funcionamento do For como nós o usamos, para entender melhor veja a Aula 6 do Alex FC.
(desculpa a bagunça de caixas de códigos acima, é que o forum tava fazendo ela sumirem se tivessem apenas escritas... to sortudo hj ¬¬)
Para finalizar, se quiser fazer um teste de aumentar ou diminuir corações. Crie um novo Obj e chame-o de obj_controle, nele adicione um evento Step e coloque o seguinte código:
- Código:
//teste
if keyboard_check_pressed(ord('X'))
{
global.life -= 10
}
if keyboard_check_pressed(ord('C'))
{
global.life += 10
}
//limitador
if global.life >= 120
{
global.life = 120
}
Aperte X para dimunir a vida, e C para aumentar. O ultimo trecho do código com titulo de limitador, limita a quantidade máxima de corações. Se quiser mais corações ou menos corações, altere o numero baseado em valores multiplos de 10. (10, 20, 30 ... 150, 300, etc).
É isso, espero que tenham gostado.
Não vou postar engine pq criei isso num jogo que estou desenvolvendo, e apenas isolei isso do jogo em questão para trazer a vocês
Próximo Tuto: Criando um Pause Personalizado (Sem usar show_message).
Abração! Até mais galera.
Atencionsamente, DHarrison.
dharrison- Games Ranking :
Notas recebidas : A - B
Data de inscrição : 04/02/2009
Reputação : 120
Número de Mensagens : 1363
Prêmios :
x 0 x 9 x 0
x 0 x 1 x 0
x 0 x 0 x 1
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 2.0
- C#
Tópicos semelhantes
» Barra de Sangue - Health Bar
» Sistema de Vida e Health
» [Tutorial]Barra de vida personalizada!
» Tutorial - Fazendo uma barra de vida vertical!
» [DUVIDA-INFELIZ!] COMO CRIAR REALMENTE A VIDA DO PERSONAGEM, DO ZERO!! {obs : já procurei e ñ consegui fazer a vida tá a muitos pontos negativos e num renicia o game}
» Sistema de Vida e Health
» [Tutorial]Barra de vida personalizada!
» Tutorial - Fazendo uma barra de vida vertical!
» [DUVIDA-INFELIZ!] COMO CRIAR REALMENTE A VIDA DO PERSONAGEM, DO ZERO!! {obs : já procurei e ñ consegui fazer a vida tá a muitos pontos negativos e num renicia o game}
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos