GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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


Plataforma fantasma

2 participantes

Ir para baixo

Plataforma fantasma Empty Plataforma fantasma

Mensagem por Zero. Dom 03 Mar 2013, 21:31

Enfim consegui fazer um sistema de movimento com rampa e colisão sem que o obj seja solido, mas agr falta a plataforma fantasma.

Aqui está a engine de movimento e rampa >https://www.dropbox.com/s/mkhifo5vxa1ki6w/Eng%20Movimento.gmk?m< , mas oque falta a plataforma fantasma, queria que o personagem pulasse debaixo da plataforma e caísse em cima, sem afetar os outros objs na room que poderão fazer a msm coisa ( no caso inimigos ) , alguem pode ajudar ?

thx

obs: essa engine naum é toda minha, só fiz umas modificações. Não sei quem foi o outro de quem peguei a base *---*


Última edição por FlyAway em Dom 03 Mar 2013, 21:37, editado 1 vez(es)
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Plataforma fantasma Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por saim Seg 04 Mar 2013, 14:26

Eu tenho quase certeza de já ter entrado nesse assunto contigo, antes...
Parei um pouco pra pensar nas plataformas fantasmas. Elas devem permitir passagem quando a velocidade vertical for negativa e negar passagem quando for positiva. O bug é quando o sentido da velocidade muda e o objeto está em contato com a plataforma... Aí, o objeto fica preso e isso provavelmente permite outro pulo, no ar.

O que eu faria é colocar uma variável na plataforma, tipo "passando" ou coisa do tipo. Daí, no step da plataforma, eu mando um
Código:
if (place_meeting(x, y, objPlayer)){
   passando = true;
   }
   else {
      passando = false;
      }
Dá pra notar que é possível substituir essa variável pela função place_meeting, né? Mas eu me organizo melhor assim.
Aí, se a velocidade for negativa, o objPlayer passa pela plataforma normalmente. Se for ">= 0", só passa se o "passando" for true. Isso pode ser usado pra saltos de cima pra baixo, (agachando e apertando pulo, por exemplo). Ou simplesmente permitir passagem enquanto o jogador estiver apertando pra baixo, independente do sinal da velocidade (em geral, acho meio ruim, desse jeito, mas pode ser que funcione no seu jogo).
Pode parecer que a ordem em que as instâcias são criadas vai influenciar, mas acho que não. Se você permitir ao objPlayer entrar em contato no último step em que a velocidade é negativa, no step seguinte em que ele rodar o teste a plataforma já vai estar com "passando = true", quer ela rode o step antes ou depois do objPlayer.

É meio lento, porque vai um pedacinho de código no STEP de cada plataforma, mas não acho que vá causar lag. De qualquer forma, você poderia colocar o teste no begin step do objPlayer, mas aí teria que usar o "with (objPlataformaFantasma)", o que dá no mesmo. Não consigo pensar numa forma de fazer o "passando" voltar pra "false" se não rodar o teste a cada step.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Plataforma fantasma Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por Zero. Seg 04 Mar 2013, 20:14

saim, eu já tinha pensando numa variavel local nas plataformas, inclusive ja fiz até o teste. O problema é que pondo esta variavel local, ela acaba virando "global" porque outros objs que esteja em cima da msm plataforma vão identificar que passando está true por causa do jogador. Eu ja pensei em muitas formas, mas não consigo concluir. Você baixou a engine ? '-'
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Plataforma fantasma Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por saim Ter 05 Mar 2013, 10:41

Baixei não... Se bem que eu devia baixar, até hoje não tenho uma engine com rampas...
Mas não entendo porque os outros objetos deveriam checar pelo valor da variável. Note que, embora a variável esteja nas plataformas, quem verifica o valor dela é o objPlayer. Pras IAs, simplesmente não cheque o valor da variável
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Plataforma fantasma Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por Zero. Ter 05 Mar 2013, 13:31

KKKKKKKKKKKK, Verdade. simplesmente não checo que é pra descer certo ?
Se puder baixar e tentar fazer, eu vou fazer aq da minha forma, mas queria ver como vc faria tb.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Plataforma fantasma Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por saim Ter 05 Mar 2013, 15:20

Baixar, agora, não dá... Aquele velho motivo de sempre: estou longe de casa.
Agora, eu pesquisei nas minhas engine aqui e encontrei uma que NÃO usa a tal variável e funciona bem! Permite até empilhar plataformas e deixar o jogador descer através de algumas delas (ou todas, mas o legal é que podem ser só algumas). Veja só:
Spoiler:
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Plataforma fantasma Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por Zero. Qua 06 Mar 2013, 14:01

Naum entendi a parte do bbox, min e sign *---*
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Plataforma fantasma Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por saim Qua 06 Mar 2013, 16:11

sign e min são funções que eu usei pra economizar if-else. Os bboxes eu usei pra generalizar um pouco a engine.

sign = sinal.
A função te retorna um desses 3 valores: +1, -1 ou 0. Como eu estou SOMANDO uma unidade, ela tem que estar com o sinal da velocidade. Aí, se a velocidade for negativa, eu somo "pra trás", efetivamente diminuindo o valor da posição.
"Enquanto não colide, avança um pixel na direção (sign) da velocidade - e, quando for colidir, sai do while"
Esse while é minha gambiarra pra substituir o move_contact.

bbox = limites da caixa de colisão.
Como eu fiz essa engine pensando numa plataforma em que a origem da sprite pode estar em qualquer lugar (eu não queria atrelar o funcionamento da engine à origem), então resolvi usar os bboxes. Se a origem for no ponto (0,0), então temos
bbox_left = 0, bbox_top = 0, bbox_right = sprite_width, bbox_bottom = sprite_height
e se a origem for no ponto (a, b), temos
bbox_left = -a, bbox_top = -b, bbox_right = sprite_width - a, bbox_bottom = sprite_height - b

min = menor.
A função te retorna o menor dos argumentos
Então quando eu escrevo
Código:
spdY = min(spdY + Grav, maxSpdy);
é o mesmo que estar escrevendo
Código:
spdY = spdY + Grav;
if (spdY > maxSpdy){
   spdY = maxSpdy;
   }
e quando eu escrevo
Código:
y += min(Grav, 1)
é como querer dizer "anda só o valor de 'Grav' (que pode ser alterado no create, depende do estilo do jogo), mas se 'Grav' for muito alta, anda só 1"
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Plataforma fantasma Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Plataforma fantasma Empty Re: Plataforma fantasma

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos