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
» Problemas com particulas
por RastaMaan Ontem à(s) 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» 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


Criar um construtor de paredes

5 participantes

Ir para baixo

Criar um construtor de paredes Empty Criar um construtor de paredes

Mensagem por Fledeber Dom 09 Nov 2014, 22:55

Pessoal, estou pensando em criar um construtor de paredes.
O funcionamento vai ser simples.
Vai ser um único objeto chamado obj_parede contendo os comportamentos de colisão padrão, só que com vários sprites separados.
A ideia é verificar quais objetos estão na volta desta parede para dar o draw no sprite correto.

Exemplo:
- Tem um objeto parede a minha esquerda? Sim
- Tem um objeto parede abaixo? Sim
-- Então colocar um sprite de canto superior direito

Outro exemplo:
- Tem um objeto parede a minha esqueda? Sim
- Tem um objeto parede a minha direita? Sim
-- Então colocar um sprite de parede horizontal

Só mais um pra fixar:
- Tem um objeto parede a minha esquerda? Sim
- Tem um objeto parede a minha direita? Sim
- Tem um objeto parede acima de mim? Sim
- Tem um objeto parede abaixo de mim? Sim
-- Então colocar um sprite de cruzamento de paredes

Esta é mais ou menos o funcionamento que eu quero.
Eu fiz este código mas não sei direito o porque não funcionou como eu queria.

if (
place_meeting(x - 1, y, obj_wall)
and place_meeting(x + 1, y, obj_wall)
) {
sprite_index = spr_wall_yellow;
}

A ideia era pintar de amarelo apenas as paredes que estão na horizonal.
Mas acabou pintando outras paredes que não se encaixam nesta regra.

Alguém tem alguma sugestão?
Abraços!
Fledeber
Fledeber

Data de inscrição : 23/09/2011
Reputação : 1
Número de Mensagens : 23
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Willy Seg 10 Nov 2014, 00:02

Existe uma velha engine, muito velha mesmo, que eu fiz em 2010 com essa finalidade. Nesta época eu era bem inexperiente, portanto os códigos podem ser bem ilógicos e não otimizados (podem não, estão --\'). Mas, poderá servir como base pra você montar o seus próprio sistema. Clique aqui para ver!

Boa sorte e flws... blz
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Fledeber Seg 10 Nov 2014, 11:04

Obrigado @Wily pela ajuda.
Na verdade esta vai ser a minha ideia.
Vou fazer todas as verificações para colocar o sprite certo. Mas apesar do meu código de exemplo ser parecido com o seu ele não está funcionando.

A ideia que neste exemplo ele só pintasse de amarelo todas as paredes que tem vizinhas em ambos os lados. Mas não é bem assim que ocorre.
Fledeber
Fledeber

Data de inscrição : 23/09/2011
Reputação : 1
Número de Mensagens : 23
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Fledeber Ter 11 Nov 2014, 13:56

Hoje fiz alguns experimentos e olha o resultado:

1) Este código deveria pintar apenas paredes que possuem um objeto a sua esquerda.
Como as paredes bem da esquerda não possuem vizinhos eles não deveriam ser pintados. Olha como ficou:
Código:
if(place_meeting(x-1, y, obj_wall)) {
    sprite_index = spr_wall_yellow;
}
Criar um construtor de paredes Paredes_horizontais

2) Este código deveria pintar apenas paredes que possuem objetos abaixo. Como as paredes bem de baixo não tem vizinhos, então eles não deveriam ser pintados. Olha só o resultado:
Código:
if(place_meeting(x, y - 1, obj_wall)) {
    sprite_index = spr_wall_green;
}
Criar um construtor de paredes Paredes_verticais

A primeira imagem é como deveria ficar, e a segunda é sempre como ficou.
Alguém tem ideia do que pode estar errado.
Fledeber
Fledeber

Data de inscrição : 23/09/2011
Reputação : 1
Número de Mensagens : 23
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Zero. Ter 11 Nov 2014, 18:34

Tente utilizar collision_point, o place_meeting pega toda a mascara do obj, com o collision_point vc pode ser mais preciso com oque quer.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Criar um construtor de paredes 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Isaque Onix Ter 11 Nov 2014, 19:05

eae, bom, ao fazer a checagem, cheque a distancia exata se possível, por exemplo, se os sprites que você usa, são centralizados e teem o tamanho de 16x16, cheque como place_meeting(x+16,y+16,objeto) assim você evita certos erros, funciona muito bem se eles estiverem bem alinhados.

e com certos tipos de "pilhas de códigos" o código anterior pode atrapalhar o próximo, como você está fazendo uma checagem múltipla (direita, esquerda, em cima e em baixo) a posição dos códigos ajudam uns aos outros. tente salvar as posições em variáveis, assim, poderá se orientar melhor.

ex:

Código:
a_dir=place_meeting(x+16,y,objeto)
a_esq=place_meeting(x-16,y,objeto)
a_cima=place_meeting(x,y-16,objeto)
a_baix=place_meeting(x,y+16,objeto)
if(a_dir && a_esq && a_cima && a_baix){/*está cercado por todos os lados.*/}else if(!a_dir && !a_esq && a_cima && a_baix){/*está cercado por cima e por baixo.*/}else if(a_dir && a_esq && !a_cima && !a_baix){/*está cercado pela direita e pela esquerda.*/}else {/*um padrão para evitar erros, nesse caso, não esta cercado*/}
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1625
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Sewer Crawler Ter 11 Nov 2014, 19:31

Fiz aqui com o seu código e ficou assim:
Criar um construtor de paredes 21q146
Sewer Crawler
Sewer Crawler

Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Isaque Onix Ter 11 Nov 2014, 19:41

isso quer dizer que funcionou ou não?

a propósito, se não, meu código não é completo, é só um exemplo do que fazer...
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1625
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Sewer Crawler Ter 11 Nov 2014, 19:44

Eu fiz com o código simples do Giancarlo. Não entendo por que com ele deu errado. '-'
Com o spr_yellow também deu certo, mas tive de montar os  blocos exatamente um ao  lado do outro.
Será que na hora de colocar os obj_wall na room algum bloco não ficou sobreposto?
Testei este "código", e também deu certo:
Código:
if !place_empty(x-1, y)
{
    sprite_index = spr_wall_yellow;
}
Sewer Crawler
Sewer Crawler

Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Fledeber Ter 11 Nov 2014, 21:26

Galera, será que isso tem haver com eu ter colocado a origem dos spr_wall como sendo o centro? Troquei agora pra 0 e parece ter dado certo.
Fledeber
Fledeber

Data de inscrição : 23/09/2011
Reputação : 1
Número de Mensagens : 23
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

Mensagem por Sewer Crawler Ter 11 Nov 2014, 23:11

Não deve ser isso não. Eu "centrei" a origin e só ficou meio fora da room, eu teria de refazer tudo:
Criar um construtor de paredes 2quqe55
Sewer Crawler
Sewer Crawler

Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios : Criar um construtor de paredes Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 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

Criar um construtor de paredes Empty Re: Criar um construtor de paredes

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