Página 1 de 1

Blocos Que Podem Ser Destruidos ?

Enviado: Seg Set 04, 2017 9:20 pm
por Shark
Bem,
Eu estou com uma dúvida à já algum tempo, e seria bom se alguém me ajuda se a corrigir este pequeno bug.
Então eu criei um bloco (sólido) que não pode ser destruído pelo facto de eu usar a função place_free();
Agora o problema é, como faço um bloco que em uma fileira apenas este primeiro sera destruído ?
Exemplo: Aqui

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 12:45 pm
por lucaslima
E aí Shark beleza? Então cara, no caso do Bomberman, uma explosão é formada por vários objetos, que são colocados em seus devidos lugares de acordo com a possibilidade e força. Não sei se é este método que está utilizando, mas vou tentar te ajudar:

Após o tempo da bomba passar ela deve explodir, neste caso criando um objeto OBJ_EXPLOSAO
Neste objeto devemos ter uma variável para controlar a força da bomba, neste caso, deve ser: bomb_power = 1;
A bomb_power deve sempre começar em 1, pois será a quantia de quadrados que ela vai explodir.

Logo após isso devemos ter a 4 variáveis, que controlarão onde serão criadas as outras explosões, sendo assim:

for(i=0;i<bomb_power;i++)
{
exp_right = instance_position(x+32*i,y,obj_parede); //Explosao_Direita = parede ao lado direito da explosão

if exp_right != -1 //Se houver alguma parede
{
    if exp_right.pode_explodir == 1 //Se a parede pode ser explodida
    {
        with(exp_right) //Com a parede
        {
            instance_destroy(); //Se destrói e cria a sua explosão, neste caso uma parede sendo destruída
            instance_create(x,y,obj_explodido);
           i = bomb_power; //Previne para que não sejam criadas outras explosões após essa parede
        }
    } //Se a parede não pode ser explodida, não acontece nada;
}
else //Se não houver nenhuma parede
{
instance_create(x+32*i,y,obj_explodido) //Cria outro objeto de explosão que apenas executa a animação
}
}


As outras 3 variáveis são: exp_left, exp_up e exp_down, estes eu deixo para você fazer para você aprender :)
Veja se esse código funciona.
OBS.: Todos os objetos que se relacionam como PAREDE devem ser filhos de um único objeto. Neste caso, você cria um objeto: obj_parede, e cria outros objetos: obj_parede1, obj_parede_de_fogo, obj_parede_de_ferro etc, e coloca tudo como filho do obj_parede;
OBS².: Cada objeto parede deve ter sua variavel pode_explodir = 0; //Define se ela pode ser explodida =1 ou não =0
Esquece o que ta riscado, estou criando uma engine aqui pra te ajudar a entender!

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 3:26 pm
por Shark
lucaslima escreveu:
E aí Shark beleza? Então cara, no caso do Bomberman, uma explosão é formada por vários objetos, que são colocados em seus devidos lugares de acordo com a possibilidade e força. Não sei se é este método que está utilizando, mas vou tentar te ajudar:

Após o tempo da bomba passar ela deve explodir, neste caso criando um objeto OBJ_EXPLOSAO
Neste objeto devemos ter uma variável para controlar a força da bomba, neste caso, deve ser: bomb_power = 1;
A bomb_power deve sempre começar em 1, pois será a quantia de quadrados que ela vai explodir.

Logo após isso devemos ter a 4 variáveis, que controlarão onde serão criadas as outras explosões, sendo assim:

for(i=0;i<bomb_power;i++)
{
exp_right = instance_position(x+32*i,y,obj_parede); //Explosao_Direita = parede ao lado direito da explosão

if exp_right != -1 //Se houver alguma parede
{
    if exp_right.pode_explodir == 1 //Se a parede pode ser explodida
    {
        with(exp_right) //Com a parede
        {
            instance_destroy(); //Se destrói e cria a sua explosão, neste caso uma parede sendo destruída
            instance_create(x,y,obj_explodido);
           i = bomb_power; //Previne para que não sejam criadas outras explosões após essa parede
        }
    } //Se a parede não pode ser explodida, não acontece nada;
}
else //Se não houver nenhuma parede
{
instance_create(x+32*i,y,obj_explodido) //Cria outro objeto de explosão que apenas executa a animação
}
}


As outras 3 variáveis são: exp_left, exp_up e exp_down, estes eu deixo para você fazer para você aprender :)
Veja se esse código funciona.
OBS.: Todos os objetos que se relacionam como PAREDE devem ser filhos de um único objeto. Neste caso, você cria um objeto: obj_parede, e cria outros objetos: obj_parede1, obj_parede_de_fogo, obj_parede_de_ferro etc, e coloca tudo como filho do obj_parede;
OBS².: Cada objeto parede deve ter sua variavel pode_explodir = 0; //Define se ela pode ser explodida =1 ou não =0
Esquece o que ta riscado, estou criando uma engine aqui pra te ajudar a entender!
Obrigado,
Se precisar da engine que eu tou a utilizar so falar mesmo que eu posso mostrar aqui no forum :)

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 3:31 pm
por lucaslima
Pronto! :) Demorei um pouco pois estava comentando as linhas e arrumando a animação das explosões. Qualquer dúvida, é só chamar. Engine BomberMan

É controlada pelo mouse, para você criar uma bomba você clica em cima da bomba que está seguindo o mouse. Ou ao invés de usar o leftpressed igual eu usei, use o mouse > global mouse > global left pressed

Você pode aumentar a força da bomba usando as setas do teclado para cima e para baixo.

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 4:00 pm
por Shark
Obrigado vou já testar :)

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 4:24 pm
por lucaslima
Tudo bem então! Aguardo as suas respostas.

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 6:11 pm
por Shark
Amigo o exemplo está óptimo, porém continuo a ter o mesmo problema.
Se quiser poderei enviar a engine em privado.
Fico aguardando uma resposta.

Re: Blocos Que Podem Ser Destruidos ?

Enviado: Ter Set 05, 2017 7:46 pm
por lucaslima
Que bom, e que ruim ao mesmo tempo! Vamos lá me mande e vamos resolver seu problema.