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
[RESOLVIDO] Player perde toda a vida de uma vez
5 participantes
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
[RESOLVIDO] Player perde toda a vida de uma vez
[RESPONDIDO]Quando meu Player encosta no inimigo, ele leva todo o dano, alguém sabe alguma forma de fazer com que ele fique "invencível" por alguns segundos, não faço ideia de como fazer isso.
Última edição por Paulomm32 em Qui 23 Jul 2020, 20:05, editado 1 vez(es)
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [RESOLVIDO] Player perde toda a vida de uma vez
Se eu fosse você, faria assim:
1 - No evento create, criaria uma variável imune para identificar a colisão com o inimigo; daí, ainda no create, criaria mais uma variável "tempo", um valor em steps, indicando a quantidade de tempo que o personagem ficará imune.
Quando você colidir com o inimigo, indique:
"contanto que imune seja igual a zero, meu personagem perderá um dano x de vida; daí, perdido esse dano, na mesma linha de código, imune ganhará valor igual a um.
Isto automaticamente cortará o dano contínuo.
É a partir daí que usaremos a variável "tempo", no evento step, dentro de uma condição onde imune seja verdadeira ( igual a 1 ).
Vamos supor que você deixou tempo=180 lá no create (a 60 fps, vale 3 segundos.)
Talvez haja um código ainda mais simples, mas da última vez que fiz isso usei dessa forma sem problemas. Se funcionar aí no GMS2, e quiser fazer o seu personagem piscar, tenho uma ideia aqui também.
1 - No evento create, criaria uma variável imune para identificar a colisão com o inimigo; daí, ainda no create, criaria mais uma variável "tempo", um valor em steps, indicando a quantidade de tempo que o personagem ficará imune.
- Código:
imune=0;
tempo=180;
Quando você colidir com o inimigo, indique:
"contanto que imune seja igual a zero, meu personagem perderá um dano x de vida; daí, perdido esse dano, na mesma linha de código, imune ganhará valor igual a um.
Isto automaticamente cortará o dano contínuo.
É a partir daí que usaremos a variável "tempo", no evento step, dentro de uma condição onde imune seja verdadeira ( igual a 1 ).
Vamos supor que você deixou tempo=180 lá no create (a 60 fps, vale 3 segundos.)
- Código:
If imune=1
{
tempo-=1; //cada step reduz a variável, a todo momento, comendo os 180 em direção ao zero;
If tempo<1 {imune = 0}; // se você gastou os 180, acabou sua imunidade. Você está sujeito a perder dano para aquele inimigo novamente.
}
If imune = 0 {tempo=180};//reseta o valor do tempo.
Talvez haja um código ainda mais simples, mas da última vez que fiz isso usei dessa forma sem problemas. Se funcionar aí no GMS2, e quiser fazer o seu personagem piscar, tenho uma ideia aqui também.
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
theguitarmester e Paulomm32 gostam desta mensagem
Re: [RESOLVIDO] Player perde toda a vida de uma vez
polosam escreveu:Se eu fosse você, faria assim:
1 - No evento create, criaria uma variável imune para identificar a colisão com o inimigo; daí, ainda no create, criaria mais uma variável "tempo", um valor em steps, indicando a quantidade de tempo que o personagem ficará imune.
- Código:
imune=0;
tempo=180;
Quando você colidir com o inimigo, indique:
"contanto que imune seja igual a zero, meu personagem perderá um dano x de vida; daí, perdido esse dano, na mesma linha de código, imune ganhará valor igual a um.
Isto automaticamente cortará o dano contínuo.
É a partir daí que usaremos a variável "tempo", no evento step, dentro de uma condição onde imune seja verdadeira ( igual a 1 ).
Vamos supor que você deixou tempo=180 lá no create (a 60 fps, vale 3 segundos.)
- Código:
If imune=1
{
tempo-=1; //cada step reduz a variável, a todo momento, comendo os 180 em direção ao zero;
If tempo<1 {imune = 0}; // se você gastou os 180, acabou sua imunidade. Você está sujeito a perder dano para aquele inimigo novamente.
}
If imune = 0 {tempo=180};//reseta o valor do tempo.
Talvez haja um código ainda mais simples, mas da última vez que fiz isso usei dessa forma sem problemas. Se funcionar aí no GMS2, e quiser fazer o seu personagem piscar, tenho uma ideia aqui também.
valeu cara! essa parada do personagem piscar parece interessante.
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [RESOLVIDO] Player perde toda a vida de uma vez
Deu certo esse método no GMS2?
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: [RESOLVIDO] Player perde toda a vida de uma vez
Eu uso essa piscagem em quase todos os meu jogos, a não ser que o player fosse dar respawn em uma área segura. Muito bom.
Flws!
Flws!
Re: [RESOLVIDO] Player perde toda a vida de uma vez
polosam escreveu:Deu certo esse método no GMS2?
Acho que pode dar certo, o problema é que eu tenho uma variável chamada global.life que define quanto de vida ele tem, então eu preciso definir que se imune for igual a zero e ele estiver colidindo com o inimigo, a vida dele cai.
if (imune = 0) and (place_meeting(x,y,obj_mau))
{
global.life --;
}
tentei usar esse código mas não deu certo, pode ser que eu esteja fazendo algo bem errado mas eu sou um iniciante e foi o que veio na minha mente.
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [RESOLVIDO] Player perde toda a vida de uma vez
Terminando a ideia do polosam:
CREATE.
STEP
CREATE.
- Código:
tempo_total = 180;
imune = 0;
tempo = tempo_total;
STEP
- Código:
if (imune==1) {
tempo -= 1; //cada step reduz a variável, a todo momento, comendo os 180 em direção ao zero;
if (tempo == 0) {
imune = 0;
tempo = tempo_total;
} // se você gastou os 180, acabou sua imunidade. Você está sujeito a perder dano para aquele inimigo novamente.
}
else { // se não está imune
if (place_meeting(x, y, obj_mau)) {
global.life--;
imune = 1;
}
}
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Diemorth e Paulomm32 gostam desta mensagem
Re: [RESOLVIDO] Player perde toda a vida de uma vez
PedroX escreveu:Terminando a ideia do polosam:
CREATE.
- Código:
tempo_total = 180;
imune = 0;
tempo = tempo_total;
STEP
- Código:
if (imune==1) {
tempo -= 1; //cada step reduz a variável, a todo momento, comendo os 180 em direção ao zero;
if (tempo == 0) {
imune = 0;
tempo = tempo_total;
} // se você gastou os 180, acabou sua imunidade. Você está sujeito a perder dano para aquele inimigo novamente.
}
else { // se não está imune
if (place_meeting(x, y, obj_mau)) {
global.life--;
imune = 1;
}
}
valeu!
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [RESOLVIDO] Player perde toda a vida de uma vez
Paulomm32 escreveu:PedroX escreveu:Terminando a ideia do polosam:
CREATE.
- Código:
tempo_total = 180;
imune = 0;
tempo = tempo_total;
STEP
- Código:
if (imune==1) {
tempo -= 1; //cada step reduz a variável, a todo momento, comendo os 180 em direção ao zero;
if (tempo == 0) {
imune = 0;
tempo = tempo_total;
} // se você gastou os 180, acabou sua imunidade. Você está sujeito a perder dano para aquele inimigo novamente.
}
else { // se não está imune
if (place_meeting(x, y, obj_mau)) {
global.life--;
imune = 1;
}
}
valeu!
Por que não usar um Alarm Event para desativar a flag ao invés de contar o tempo manualmente?
Quando o jogador for atingido:
CREATE EVENT
- Código:
...
imune = true;
alarm[0] = tempo_total;
...
Então dentro do evento do alarme:
ALARM EVENT 0
- Código:
imume = false;
Ricoh5A22- Data de inscrição : 26/11/2020
Reputação : 0
Número de Mensagens : 3
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
- Java
- C#
- Godot
- Javascript
- C ou C++
polosam gosta desta mensagem
Tópicos semelhantes
» Player nao perde vida ao cair na lava
» (AJUDA)Dúvida:O player perde vida e a sprite(imagem do evento draw) muda.
» [Resolvido]Como fazer o Inimigo atacar se estiver perto do player e o player perder vida
» [Resolvido] Vida do player nao passar de 100
» [resolvido][Duvida]Vida do player
» (AJUDA)Dúvida:O player perde vida e a sprite(imagem do evento draw) muda.
» [Resolvido]Como fazer o Inimigo atacar se estiver perto do player e o player perder vida
» [Resolvido] Vida do player nao passar de 100
» [resolvido][Duvida]Vida do player
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos