Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor 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
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
Vou ter que fazer isso toda vez pra todo objeto?
+4
RafaelCazarotto
JoaoVanBlizzard
theguitarmester
iSillum
8 participantes
Página 1 de 2
Página 1 de 2 • 1, 2
Vou ter que fazer isso toda vez pra todo objeto?
Toda vez que eu quiser tornar um objeto solido eu vou ter que colocar collision para o objeto que eu quero que não atravesse?
Se eu tiver por exemplo 100 tipos de chão sólido diferente vou ter que colocar collision pra cada um?
Não teria um jeito mais prático?
Eu marquei os objetos como sólido e no step coloquei:
mas não funcionou, o que eu faço?
Se eu tiver por exemplo 100 tipos de chão sólido diferente vou ter que colocar collision pra cada um?
Não teria um jeito mais prático?
Eu marquei os objetos como sólido e no step coloquei:
- Código:
move_contact_solid(direction,12)
vspeed=0
mas não funcionou, o que eu faço?
Última edição por iSillum em Qua 30 Jan 2013, 12:27, editado 2 vez(es)
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
era para funcionar, tente com -1(Loucuras irão acontecer! mas tente).
você não precisa colocar collision para todas, existe uma função chamada 'Parent', coloque um chão como o principal, e nos outros, marque como parent esse.
Caso seu GM não esteja no modo normal, isto é, o advanced mode está desligado, essa função não aparecerá.
INFO(por min)> Parent é uma função que serve para um objeto herdar características e funções do outro, qualquer evento que vocÊ não tiver criado e o Objeto PAI tiver, ele irá copiar. ele tambem se comportará como o outro nas colisões usadas do outros(mas as suas própias).
PAI é o objeto que você marcou para ser o PARENT.
você não precisa colocar collision para todas, existe uma função chamada 'Parent', coloque um chão como o principal, e nos outros, marque como parent esse.
Caso seu GM não esteja no modo normal, isto é, o advanced mode está desligado, essa função não aparecerá.
INFO(por min)> Parent é uma função que serve para um objeto herdar características e funções do outro, qualquer evento que vocÊ não tiver criado e o Objeto PAI tiver, ele irá copiar. ele tambem se comportará como o outro nas colisões usadas do outros(mas as suas própias).
PAI é o objeto que você marcou para ser o PARENT.
Re: Vou ter que fazer isso toda vez pra todo objeto?
theguitarmester eu coloquei assim no STEP, funcionou, mas eu queria saber mais sobre essa função (move_contact_solid) porem eu não achei nenhum tutorial sobre ela no fórum.
Quando eu já tiver criado outros tipois de chão eu vejo mais sobre esse
- Código:
if move_contact_solid(270,12){
vspeed=0
}
Quando eu já tiver criado outros tipois de chão eu vejo mais sobre esse
- Código:
parent
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
Eu acredito que o problema pode esta na sprite ou no chão que você está colidindo,tem que ver se a opição na sprite chamada "precision collision check"
o ideal é desmarcar ela e colocar as propiedades de colisão em rectangle(são os mais tipicos problemas que ocorrem nas colisoes) se não for isso,examine se vc colocou corretamente as funçoes das instancias ok
o ideal é desmarcar ela e colocar as propiedades de colisão em rectangle(são os mais tipicos problemas que ocorrem nas colisoes) se não for isso,examine se vc colocou corretamente as funçoes das instancias ok
JoaoVanBlizzard- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: Vou ter que fazer isso toda vez pra todo objeto?
tem 2 modos para fazer isso, o primeiro é por os objetos como tile set assim vc poem na fase sobre a colisao que pod ser transparente ou vc pode por o parent, pra por o parent é facil
1- faça a colisao com um objeto esse vai ser a colisao principal
2- depois cada objeto que vc queira a colisão vc vai na caixa de escrita em baixo de nome oned ta escrito parent e selecione o objeto da colisao, vc vai fazer isso com todas os obvjeto que vc quer a colisao
se vc nao intendeu eu faço uma engine bem rapida ;)
1- faça a colisao com um objeto esse vai ser a colisao principal
2- depois cada objeto que vc queira a colisão vc vai na caixa de escrita em baixo de nome oned ta escrito parent e selecione o objeto da colisao, vc vai fazer isso com todas os obvjeto que vc quer a colisao
se vc nao intendeu eu faço uma engine bem rapida ;)
RafaelCazarotto- Games Ranking :
Notas recebidas : D-D-D-C-C-B
Data de inscrição : 15/03/2012
Reputação : 13
Número de Mensagens : 564
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
Não entendi RafaelCazarotto
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
ok eu fasso uma engine bem rapida então jaja posto com o edit =]
RafaelCazarotto- Games Ranking :
Notas recebidas : D-D-D-C-C-B
Data de inscrição : 15/03/2012
Reputação : 13
Número de Mensagens : 564
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
a função move_contact é assim:
se você está colidindo(vou usar o exemplo do solid, com seus n° _solid(270,12)) com um sólido, você irá checar se até 12 pixeis na direção 270 não está colidindo, e, senão estiver, ir até a posição que não colide.
se usar -1, ele irá checar até onde não está colidindo naquela direção, e irá, podendo dar um salto Gigantesco(mas nunca ocorrerá o erro de ficar trancado dentro de um objeto sólido).
RafaelCazarotto, Cópia de Post é Pirataria.
se você está colidindo(vou usar o exemplo do solid, com seus n° _solid(270,12)) com um sólido, você irá checar se até 12 pixeis na direção 270 não está colidindo, e, senão estiver, ir até a posição que não colide.
se usar -1, ele irá checar até onde não está colidindo naquela direção, e irá, podendo dar um salto Gigantesco(mas nunca ocorrerá o erro de ficar trancado dentro de um objeto sólido).
RafaelCazarotto, Cópia de Post é Pirataria.
Re: Vou ter que fazer isso toda vez pra todo objeto?
asuhaushauhsaus eu sei foi um grande engano, o mateus3332 é meu irmao e tava logado na conta dele depois eu vi e tentei cancelar o envio e postei na minha conta aushuahsuahsa ele ja editou o post dele, desculpa aiRafaelCazarotto, Cópia de Post é Pirataria
a engine ta quase pronta
//EDIT
pronto ta aqui a engine
https://dl.dropbox.com/s/ahxrwu1v5e6wupe/engine%20colisao.gmk?dl=1
nao expliquei pq realmente nao precisa explicação hehehe e desculpe o engano de novo =]
Última edição por RafaelCazarotto em Sáb 26 Jan 2013, 15:32, editado 1 vez(es)
RafaelCazarotto- Games Ranking :
Notas recebidas : D-D-D-C-C-B
Data de inscrição : 15/03/2012
Reputação : 13
Número de Mensagens : 564
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
theguitarmester Vê se eu entendi, eu testei o move_contact_solid com números diferentes e eu percebi uma coisa:
Se eu coloco por exemplo move_contact_solid(270,12)
O objeto vai descer (por causa do 270) de 12 em 12 pixels até colidir com algo sólido?
É a diferença entre ele a gravidade e que essa função não tem aceleração?
Se eu coloco por exemplo move_contact_solid(270,12)
O objeto vai descer (por causa do 270) de 12 em 12 pixels até colidir com algo sólido?
É a diferença entre ele a gravidade e que essa função não tem aceleração?
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
Não, ele não irá descer de 12 em 12, e ele não tem haver com a gravidade.
ele irá descer no máximo 12 pixeis, se, só após de 12 pixeis ele se encontre livre de sólidos, mas ele descerá tudo de uma vez só, se ele se encontrar livre em 5 pixeis, ele moverá 5 pixeis, aquele n°12 é o limite para a deslocação .
mesmo que você coloque um numero altíssimo como 200, se ele achar se livre em 5 pixeis, ele irá mover 5 pixeis.
se você colocar -1, esse limite para a deslocação não irá existir.
entendeu, caso não, é só comentar, estamos aqui para aprender.
ele irá descer no máximo 12 pixeis, se, só após de 12 pixeis ele se encontre livre de sólidos, mas ele descerá tudo de uma vez só, se ele se encontrar livre em 5 pixeis, ele moverá 5 pixeis, aquele n°12 é o limite para a deslocação .
mesmo que você coloque um numero altíssimo como 200, se ele achar se livre em 5 pixeis, ele irá mover 5 pixeis.
se você colocar -1, esse limite para a deslocação não irá existir.
entendeu, caso não, é só comentar, estamos aqui para aprender.
Re: Vou ter que fazer isso toda vez pra todo objeto?
Você não vai colocar isso no STEP sem uma condição. Este comando geralmente dentro de alguma condição ou Evento de COLISAO. Por exemplo, você pode usar para simular a gravidade:iSillum escreveu:Toda vez que eu quiser tornar um objeto solido eu vou ter que colocar collision para o objeto que eu quero que não atravesse?
Se eu tiver por exemplo 100 tipos de chão sólido diferente vou ter que colocar collision pra cada um?
Não teria um jeito mais prático?
Eu marquei os objetos como sólido e no step coloquei:
- Código:
move_contact_solid(direction,12)
vspeed=0
mas não funcionou, o que eu faço?
- Código:
if (place_free(x, y + 1))
{
if (vspeed > 15) vspeed = 15; // limita a forca da gravidade
gravity_direction = 270; // para baixo
gravity = 0.5; // forca da gravidade
} else
{
move_contact_solid(270, 10);
gravity = 0;
vspeed = 0;
}
Quanto ao fato de criar isso para cada objeto, sim, se você nao usar o conceito de heranca. Supondo que todos os seus objetos CHAO se comportam de maneira semelhante, então eles podem HERDAR todos os códigos do "PAI" deles. Neste caso crie um objeto chamdo chao_pai e coloque o código acima no Evento STEP dele.
Depois nos outros objetos que você deseja que tenham comportamente semelhante ao "Pai" basta definir como disse o amigo acima a propriedade "Parent" colcando como "chao_pai" o seu parente. Pronto, assim você nao precisa mais definir o codigo em cada objeto que tenha o mesmo comportamento. Esse conceito de herança é muito poderoso no GM, tente aprender isso e podera criar qualquer tipo de coisa.
Flws!
Re: Vou ter que fazer isso toda vez pra todo objeto?
Eu fiz uma engine para ele e para fazer esse esquema de colisao bastou colocar o outro objeto como solid e paret como o obj da colisao principal
RafaelCazarotto- Games Ranking :
Notas recebidas : D-D-D-C-C-B
Data de inscrição : 15/03/2012
Reputação : 13
Número de Mensagens : 564
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
Obrigado RafaelCazarotto pela engine, eu entendi esse tal de parent e vinians obrigado também, mas esse move_contact_solid ainda não está tal claro.
Ele vai ver se abaixo do objeto (abaixo por causa do 270) tem 12 pixels livre, se tiver ele vai mover da posição em que ele esta 12 pixels para baixo de uma vez só (do 1 ao 12 e não 1,2,3,4..12), e vai continuar fazendo isso eternamente até se encontrar com um objeto sólido. <- Isso está certo?
Mas se ele verifica se tem 12 pixels livre para descer do 1 ao 12 porque ele também desse se tiver só 5 pixels livres?
theguitarmester escreveu:Não, ele não irá descer de 12 em 12, e ele não tem haver com a gravidade.
ele irá descer no máximo 12 pixeis, se, só após de 12 pixeis ele se encontre livre de sólidos, mas ele descerá tudo de uma vez só, se ele se encontrar livre em 5 pixeis, ele moverá 5 pixeis, aquele n°12 é o limite para a deslocação .
mesmo que você coloque um numero altíssimo como 200, se ele achar se livre em 5 pixeis, ele irá mover 5 pixeis.
se você colocar -1, esse limite para a deslocação não irá existir.
entendeu, caso não, é só comentar, estamos aqui para aprender.
Ele vai ver se abaixo do objeto (abaixo por causa do 270) tem 12 pixels livre, se tiver ele vai mover da posição em que ele esta 12 pixels para baixo de uma vez só (do 1 ao 12 e não 1,2,3,4..12), e vai continuar fazendo isso eternamente até se encontrar com um objeto sólido. <- Isso está certo?
Mas se ele verifica se tem 12 pixels livre para descer do 1 ao 12 porque ele também desse se tiver só 5 pixels livres?
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
para talves MELHOR entendimento, vou marcar o que está certo e o que está errado.
CERTOEle vai ver se abaixo do objeto (abaixo por causa do 270)
CERTO, mas, se antes de chegar a 12 pixels, ele já se encontrar livre,(exemplo) em 4 pixeis, ele irá mover 4 pixeis.
tem 12 pixels livre, se tiver ele vai mover da posição em que ele esta 12 pixels para baixo de uma vez só (do 1 ao 12 e não 1,2,3,4..12)
ERRADO, ele vai fazer isso enquanto estiver colidindo com um sólido, e não quando não estiver., e vai continuar fazendo isso eternamente até se encontrar com um objeto sólido. <- Isso está certo?
12 é o numero maximo, antes do 12, ele verificará 1 pixel, 2 pixel, 3 pixel... até chegar no 12, e, se não achar no 12, ele irá para de verificar e o objeto ficará parado, para ele não para de verificar, coloque o n°-1, porque é um Comando extra, que mandará ele não para de executar até se encontrar livre.Mas se ele verifica se tem 12 pixels livre para descer do 1 ao 12 porque ele também desse se tiver só 5 pixels livres?
Re: Vou ter que fazer isso toda vez pra todo objeto?
Explicação sobre o move_contact* (todos)
Quando o GM move os objetos usando vspeed e hspeed, a cada STEP ele soma este valores e testa a colisão, caso voce tenha definido. Então vamos supor que o seu vspeed esteja com o valor de 10 por STEP (a gravidade fe-lo chegar a isso), observe o desenho abaixo:
No próximo STEP ele vai somar mais 10 pixels no VSPEED o que o levaria a passar do Ponto de Contato veja:
Mas antes que isso ocorra, o GM intercepta essa ação atravez do Evento de Colisão e ele te entrega os valores de x e y ANTES de somar o 10. Por isso você usa o move_contact_solid(270, 15) para que ele o GM mova o objeto ATÉ o Ponto de Contato, fazendo com que fique assim:
Isso vale para move_contact() em qualquer direção. Espero que tenha entendido pois isso é muito importante para criar jogos de plataforma.
Flws!
Quando o GM move os objetos usando vspeed e hspeed, a cada STEP ele soma este valores e testa a colisão, caso voce tenha definido. Então vamos supor que o seu vspeed esteja com o valor de 10 por STEP (a gravidade fe-lo chegar a isso), observe o desenho abaixo:
No próximo STEP ele vai somar mais 10 pixels no VSPEED o que o levaria a passar do Ponto de Contato veja:
Mas antes que isso ocorra, o GM intercepta essa ação atravez do Evento de Colisão e ele te entrega os valores de x e y ANTES de somar o 10. Por isso você usa o move_contact_solid(270, 15) para que ele o GM mova o objeto ATÉ o Ponto de Contato, fazendo com que fique assim:
Isso vale para move_contact() em qualquer direção. Espero que tenha entendido pois isso é muito importante para criar jogos de plataforma.
Flws!
Re: Vou ter que fazer isso toda vez pra todo objeto?
Mas antes que isso ocorra, o GM intercepta essa ação atravez do Evento de Colisão e ele te entrega os valores de x e y ANTES de somar o 10.
Mas pra que o GM me retorna os valores de X e Y? Como ele me mostra esses valores? Porque eu iria querer saber esse valores?
Por isso você usa o move_contact_solid(270, 15) para que ele o GM mova o objeto ATÉ o Ponto de Contato, fazendo com que fique assim:
Então move_contact_solid é na verdade a forma escrita do evento Collision?
theguitarmester eu ia pedir pra você me dar o exemplo só que o vinians já tinha feito isso :|
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
é só traduzir, "mova com um contanto", mover-se quando há uma colisão, no caso, uma colisão com um sólido.Então move_contact_solid é na verdade a forma escrita do evento Collision?
o move_contact é algo que é bem útil usar nos collisions.
ele irá aplicar os valores no objeto para que ele não esteja mais colidindo.Mas pra que o GM me retorna os valores de X e Y?
Re: Vou ter que fazer isso toda vez pra todo objeto?
Vocês dois disseram coisas diferentes, move_contact_solid serve pra não deixar o objeto atravessar, pra saber se está colidindo, pra quê?
iSillum- Data de inscrição : 22/01/2013
Reputação : 0
Número de Mensagens : 72
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Vou ter que fazer isso toda vez pra todo objeto?
Isillum, você não sabe programar o Game Maker por escrito (pelos codigos)?
Porque se você não souber você vai ter que ler alguns tutoriais, tudo o que o vinians disse eu entendi, mas quando você disse :
"Mas pra que o GM me retorna os valores de X e Y? Como ele me mostra esses valores? Porque eu iria querer saber esse valores?
Isso me chegou a pensar que você não conhece os codes do game maker!
Caso eu esteja certo, veja no índice de tutorias que pode ajudar bastante!
Porque se você não souber você vai ter que ler alguns tutoriais, tudo o que o vinians disse eu entendi, mas quando você disse :
"Mas pra que o GM me retorna os valores de X e Y? Como ele me mostra esses valores? Porque eu iria querer saber esse valores?
Isso me chegou a pensar que você não conhece os codes do game maker!
Caso eu esteja certo, veja no índice de tutorias que pode ajudar bastante!
Ralphed- Data de inscrição : 18/08/2010
Reputação : 12
Número de Mensagens : 461
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Godot
- Outros
Página 1 de 2 • 1, 2
Tópicos semelhantes
» GM Studio salva toda hora como desativar isso?
» Objeto cobre toda a room
» [Resolvido] como criar um objeto na room toda?????
» como fazer que o jogo apareça em tela toda?
» Como fazer um objeto se duplicar e como fazer um objeto seguir o outro?
» Objeto cobre toda a room
» [Resolvido] como criar um objeto na room toda?????
» como fazer que o jogo apareça em tela toda?
» Como fazer um objeto se duplicar e como fazer um objeto seguir o outro?
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos
|
|