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
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Ontem à(s) 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16


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

- Tópicos semelhantes

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