Problema de colisão em jogo de tetris

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

Problema de colisão em jogo de tetris

Mensagem por Maker em Sab 19 Fev 2011, 11:59

Quando uma peça encostra em outra pela, ela deverá parar e virá a outra peça.

O meu problema é que quando um peça encosta na LATERAL de outra peça, é como se a colisão fosse verdadeira, aí ela simplesmente para ali no ar do lado da peça e vem a outra.

Alguém tem alguma idéia de como fazer a peça parar somente quando a colisão for em cima da outra peça?

Não sei se isso ajuda, mas essa é a rotina que faz a peça descer sozinha (está no alarme 0):
Código:
if canmove = true
{
y+=16;

if (global.down > 0)
{
    alarm[0] = global.delay * room_speed;
    global.down = global.down - 1;
}
}

Maker

Número de Mensagens : 51
Data de inscrição : 09/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problema de colisão em jogo de tetris

Mensagem por Limalokão em Sab 19 Fev 2011, 12:12

Bom dia amigo, se eu não me engano para voce fazer um jogo de tetris voce tem que alinhar no Grid! La na aba main1 tem a função align to grid! e coloca o tamanho de cada quadradinho das suas peças do tetris! Isso vc tem que fazer em cada peça! Digamos assim: se eu tenho um bloco de tetris com 4 bloquinhos cada um tem 16x16 entao eu vou alinhar a peça "bloco" em 16x16! entendeu? Eu acho que nao vai dar erro não! veja la se funciona! Vlws

--EDIT--

Entendi sua pergunta: "Quando voce aperta para o lado e dos lados tem uma outra peça parada, se apertar de mais para o lado ele vai colidir e freiar ali neh?! Entendi! Voce pode criar uma variavel para que se tiver algo do lado da peça o player não possa apertar para o lado, sendo assim a peça não irá colidir com a outra! Vou fazer um code aki e ja te mando!

--EDIT²--

Codigo coloca no create de cada peça:
Código:
podeapertar=true

No step:
Código:
if podeapertar=true && if place_free(x+1,y)
{
//coloca aki o que você quer que aconteça com a peça, no caso apertar as flechas para o lado
}

if podeapertar=true && if place_free(x-1,y)
{
//coloca aki o que você quer que aconteça com a peça, no caso apertar as flechas para o lado
}

else //se nao derto certo tenta tirar este else =D

if !place_free(x+1,y) //se nao estiver livre do lado direito, ou seja, se tiver alguma peça...
{
podeapertar=false
//aki o código de continuar caindo
}

if !place_free(x-1,y) //se nao estiver livre do lado direito, ou seja, se tiver alguma peça...
{
podeapertar=false
//aki o código de continuar caindo
}

Cara eu tentei, mas nao testei, então espero que de certo! Foi mal qualquer coisa ai!

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

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