Como fazer Inimigo morrer com mais de 1 dano?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 01:49

Pessoal, eu estou com 2 dúvidas:

1 - Fazer o inimigo morrer com mais de 1 dano. Ou seja: Meu jogo é um jogo de naves, e o herói atira, então eu gostaria de fazer com que o tiro do herói matasse o inimigo com 10 danos, por exemplo.

2 - Após exclarecer a dúvida acima, eu gostaria de deixar uma barra de life em cima do inimigo, perseguindo ele para onde ele for. Sendo 10 o limite máximo da barra de life e a partir do momento em que o inimigo for perdendo life, a barra for mudando de cor, em um processo semelhante a barra de life básica que vem disponível no Game Maker.

Um grande abraço, pessoal!

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Anderson3d em Seg 28 Dez 2009, 02:11

o tutorial do red dragon explica isso direitinho...

Anderson3d

Ranking : Nota A
Número de Mensagens : 1479
Idade : 33
Data de inscrição : 15/02/2009
Notas recebidas : A - A
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

http://www.indiegamebr.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Gabreel em Seg 28 Dez 2009, 03:12

Vo resolve o nº que é + facil, o 2 é chatinho ._.
NAVE INIMIGA
CREATE
vida_nave=10 //numero de danos necessarios
STEP
if vida_nave<=0 {
instance_destroy(self)
}

COLISÃO DO TIRO COM A NAVE INIMIGA
other.vida_nave-=1
instance_destroy(self)

NÃO TESTEI, MAS DEVE DAR CERTO

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por diassis em Seg 28 Dez 2009, 12:49

vamos ver se consigo te ajudar!!!

no create do inimigo crie uma variavel que será a vida dele e outra para a barra de life:
Código:

var (vida)=10;  // 10 é a vida do inimigo
health=10;      // valor da barra de life

na colisão coma a bala:
Código:

with (other) instance_destroy();
if (vida>0)
{
vida-=1;
health-=1;
}
else
{
instance_destroy();
}

no evento draw do inimigo:
Código:

draw_sprite(sprite_da_nave,-1,x+0,y+0)  // desenhar a prite
draw_healthbar(x+0,y+50,x+64,y+62,health,c_white,16711680,255,0,1,1);  // ajuste os valores de x e de y como desejar
draw_text(x+0,y+65,string(vida))  // desenha as vidas da nave, pode ajustar x e y também

uma coisa que sempre digo aqui é que quando se usa o evento draw, a sprite some então tem que desenha-la também

boa sorte com o jogo e FELIZ FESTAS

diassis

Número de Mensagens : 310
Idade : 40
Data de inscrição : 07/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 13:26

diassis
Seu código está funcionando. A barra está aparecendo junto ao inimigo, mas acontece que a barra do herói, que tinha um tamanho específico, agora está pequena, do mesmo tamanho da barra do inimigo, e quando eu acerto o inimigo o herói também perde life.

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por PedroX em Seg 28 Dez 2009, 13:47

em vez de health-=1 ponha self.health-=1

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 14:51

Ainda está dando problema.
Eu vou tentar explicar com imagens, para que todos entendam melhor:

O herói possui uma barra de life que tem a quantidade 100 e cheia fica assim:


Ao levar um dano a barra perde 10 pontos desse valor 100, ficando assim:


Ao levar 10 danos o herói morre. Mas acontece que, o herói já está começando com a barra como se estivesse faltando 1 dano para morrer:


Se o herói levar um tiro do inimigo ele morrerá na hora, pois falta apenas 1 dano para ele morrer, mas se ele acertar o inimigo, ele também perde life, mas contando como se essa última barra mostrada fosse a barra cheia, e a partir desse 1/10 de life, começam a contar os 10 danos. Exemplo:
Barra de life com problema após o herói dar alguns danos no inimigo.


Eu acho que um processo semelhante está ocorrendo com o inimigo, pois a barra de life dele também está começando com 1/10 do normal:

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por PedroX em Seg 28 Dez 2009, 14:56

no evento create , vc deve ter colocado health 10, o certo é 100

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 15:11

Pedro Henrique
Realmente estava 10. Então eu coloquei 100 e agora está lendo como se a barra de life tivesse 100 pontos normalmente. Antes quando eu acertava o inimigo, eu perdia life também e começava a contar os 10 danos a partir do 1/10 de life que aparece. Mas agora o herói morre na hora quando acerta o inimigo, pois os danos estão corretos agora, porque o life já começa com 1/10 e ao acertar o inimigo o herói também está perdendo life e está morrendo.

Resumindo, os problemas que persistem são esses:

- A barra do herói e do inimigo começam faltando apenas 1 dano para o personagem morrer:
Barra do herói

Barra do inimigo:


- Quando o herói acerta o inimigo ele também perde life.

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por PedroX em Seg 28 Dez 2009, 15:24

posta todos os seus codigos de health, ai acharemos os bugs...

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por KinKing em Seg 28 Dez 2009, 16:05

Não se pode usar a variável health para mais de um objeto, pois ela é global... Se vocês tentarem mudar ela em um, vai mudar em todos.

Pra criar uma barrinha de vida que muda a cor bem legal, pode usar o make_color_hsv:


No Create do inimigo iniciamos as variáveis que usaremos, tanto o HP em porcentagem quanto a cor da barra de hp (que no caso, será vermelha).
Se você abrir o Paint e editar uma das cores, verá que 239 e 150 são Matiz e Saturamento do vermelho mais à direita... Então para outras cores, é só mudar isso.
O hp está em porcentagem, então não deve ser alterado... Se quer que ele morra em 10 tapas, faça perder 10% de hp. Diminua 10 em 10 vezes...
Código:
hp = 100;
hpcolor = make_color_hsv(239,150,hp+100);

No Step, atualizamos a cor da barra para que ela sempre esteja de acordo com a % restante do HP do objeto. Quando o HP mudar, o hpcolor também mudará.
Código:
hpcolor = make_color_hsv(239,150,hp+100);

E no Draw desenhamos tudo, de acordo especialmente com o hpcolor.
Uma linha para o fundo branco, uma para o preenchimento, e uma para a borda:
Código:
draw_sprite(sprite_index,image_index,x,y); //Use seu próprio draw_sprite_ext se desejar, é claro

draw_rectangle_color(x-50,y-50,x+50,y-30,c_white,c_white,c_white,c_white,0);
draw_rectangle_color(x-50,y-50,x+50,y-30,hpcolor,hpcolor,hpcolor,hpcolor,0);
draw_rectangle_color(x-50,y-50,x+50,y-30,c_black,c_black,c_black,c_black,1);

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 16:33

Está quase funcionando. Agora eu estou seguindo o raciocínio do kinking.
As barras de life do herói e do inimigo já estão aparecendo na tela e o herói está perdendo energia normalmente. Só que o tiro do herói está atravessando o inimigo e não está acontecendo nada.

Agora falta arrumar a colisão entre o tiro do herói e o inimigo, para fazer o inimigo perder life, morrer e sumir da tela.

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por diassis em Seg 28 Dez 2009, 17:12

____________EDITADO______________

Viper7 o problema é que health tem um poder global para todos os objetos nesse caso para o obj_inimigo você terá que criar um rectagle e atribuir ele a vida do obj_inimigo e os códigos que te dei é para por somente no inimigo

retire (health-=1; ) da colisão
E retire health=10; do create do inimigo

no draw do obj_inimigo:
Código:

draw_sprite(sprite0,-1,x+0,y+0)
draw_text(x+0,y+80,string(vida))
draw_rectangle_color(x+0,y+50,x+100,y+62,255,255,255,255,0);
draw_rectangle_color(x+0,y+50,x+obj_inimigo.vida,y+62,65280,255,255,65280,0);

// subistituir "obj_inimigo" pelo nome do obj. que você usa


agora vai dar certo

diassis

Número de Mensagens : 310
Idade : 40
Data de inscrição : 07/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 18:33

diassis escreveu:____________EDITADO______________

Viper7 o problema é que health tem um poder global para todos os objetos nesse caso para o obj_inimigo você terá que criar um rectagle e atribuir ele a vida do obj_inimigo e os códigos que te dei é para por somente no inimigo

retire (health-=1; ) da colisão
E retire health=10; do create do inimigo

no draw do obj_inimigo:
Código:

draw_sprite(sprite0,-1,x+0,y+0)
draw_text(x+0,y+80,string(vida))
draw_rectangle_color(x+0,y+50,x+100,y+62,255,255,255,255,0);
draw_rectangle_color(x+0,y+50,x+obj_inimigo.vida,y+62,65280,255,255,65280,0);

// subistituir "obj_inimigo" pelo nome do obj. que você usa


agora vai dar certo

Diassis, está aprecendo a seguinte mensagem:
ERROR in
action number 1
of Draw Event
for object disco_verde:
Error in code at line 1:
draw_sprite(sprite0,-1,x+0,y+0)
at position 13: Unknown variable sprite0

Vamos ver se eu entendi o que eu devo fazer: De acordo com a mensagem descrita acima, há um erro porque está pedindo para aparecer o sprite "sprite0" e o mesmo não existe em meu jogo. No caso, esse "sprite0" seria a barra de life que eu teria que desenhar e importar para o jogo?

Gostaria de deixar aqui um muito obrigado a todos do tópico que estão me ajudando.

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Anderson3d em Seg 28 Dez 2009, 18:43

vou explicar como eu faço no meu jogo

1- crio um obj que sera o inimigo parado (seja esquerda ou direita)
2- esse obj parado tem um radom que faz os movimentos, cria novos objetos e apaga o parado (golpe1,2 ou teleporte por exemplo)
3-sempre que esses objetos sao acertados pelo heroi eles sao destruidos e surge um novo obj, inimigo apanhando.
4-existe uma variavel global que é o life no inimigo
5-sempre que aparece o objeto inimigo apanhando a var global é subtraida..
6-se a ver global chegar a zero ela destroy o inimigo.

Anderson3d

Ranking : Nota A
Número de Mensagens : 1479
Idade : 33
Data de inscrição : 15/02/2009
Notas recebidas : A - A
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

http://www.indiegamebr.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por KinKing em Seg 28 Dez 2009, 18:45

Na verdade, esse draw_sprite no evento draw é pra desenhar a própria sprite do objeto. Não tem nada a ver com a barra de vida, é que se você fazer seu próprio evento de Draw, o evento padrão que vem com um draw_sprite some. Aí você tem que colocar seu próprio draw_sprite nele, para que apareça a sprite do seu objeto.

Em outras palavras:
Quando você colocou o evento Draw, tirou o código que faz aparecer a sprite dele, e estamos colocando isso de volta com draw_sprite.

EDIT: Então sprite0 tem que ser substituído pela sprite do objeto.

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por diassis em Seg 28 Dez 2009, 19:03

o KinKing tá coberto de razão "sprite0" é um exemplo, você tem que botá o nome da sprite do objeto inimigo

diassis

Número de Mensagens : 310
Idade : 40
Data de inscrição : 07/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Viper7 em Seg 28 Dez 2009, 19:14

KinKing escreveu:Na verdade, esse draw_sprite no evento draw é pra desenhar a própria sprite do objeto. Não tem nada a ver com a barra de vida, é que se você fazer seu próprio evento de Draw, o evento padrão que vem com um draw_sprite some. Aí você tem que colocar seu próprio draw_sprite nele, para que apareça a sprite do seu objeto.

Em outras palavras:
Quando você colocou o evento Draw, tirou o código que faz aparecer a sprite dele, e estamos colocando isso de volta com draw_sprite.

EDIT: Então sprite0 tem que ser substituído pela sprite do objeto.

CONSEGUI!!!!!!!!!! cheers
kinking, muito obrigado pela ajuda!!!!!
Obrigado também a todos que postaram neste tópico querendo me ajudar!!!!!

Viper7

Número de Mensagens : 82
Data de inscrição : 20/11/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mascotegames.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer Inimigo morrer com mais de 1 dano?

Mensagem por Conteúdo patrocinado Hoje à(s) 20:05


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum