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
Tilesets aleatórios
3 participantes
Página 1 de 2
Página 1 de 2 • 1, 2
Tilesets aleatórios
Olá! Estou desenvolvendo um projeto, e gostaria de saber como eu posso criar tilesets aleatórios surgirem na view! Aliás, na room, já que já deu para ter a idéia de que é um jogo infinito. Bom, não são bem tilesets, são terrenos acidentados. Eu havia pensado num método que poderia dar certo:
- Código:
Desenho os tipos de terreno num background e uso draw_sprite_part juntamente com um irandom ou choose
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Markituh, a quanto tempo!
Sua idéia é boa, mas eu gostaria de entender melhor do que se trata a dúvida. O jogo é infinito ou a fase é infinita? Tipo, o background fica fixo ou tem uma movimentação infinita?
Acho que você sabe como criar uma background a partir de uma surface, não sabe? Se for coisa fixa, eu sugiro fazer isso: crie a surface, mande partes aleatórias de backgrounds pra lugares não-aleatórios (de forma a preencher toda a surface), crie a bg e mande ela pra room. Se for infinito, faça a mesma coisa, mas numa surface grande o suficiente para que o jogador não perceba que você usou o tiled background.
Sua idéia é boa, mas eu gostaria de entender melhor do que se trata a dúvida. O jogo é infinito ou a fase é infinita? Tipo, o background fica fixo ou tem uma movimentação infinita?
Acho que você sabe como criar uma background a partir de uma surface, não sabe? Se for coisa fixa, eu sugiro fazer isso: crie a surface, mande partes aleatórias de backgrounds pra lugares não-aleatórios (de forma a preencher toda a surface), crie a bg e mande ela pra room. Se for infinito, faça a mesma coisa, mas numa surface grande o suficiente para que o jogador não perceba que você usou o tiled background.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Opa, sim, foi muito tempo! Esperava que não entendesse, então vamos por partes, como diria Jack O Estripador:
Eu tenho um jogo infinito sabe, não acaba até que você perca o objetivo dado(morrer ou algo do tipo). Eu queria que viessem obstáculos do lado direito da fase para o player ultrapassá-los. Mudei minha idéia quanto a um terreno acidentado, seria muito complicado, acho que vou com tiles retos mesmo. O que eu queria saber é um terreno acidentado, mas como desisti e sei muito bem fazer com objetos, acho que este tópico se tornou inútil.
PORÉM, ele não se tornou de verdade. Seria possível eu manter os tiles proporcionais? Algo como criar conexões entre os tiles? É porque ficaria algo muito estranho eu ter um bloqueio de 10 cm e depois vir um de 2 metros. Espero que tenha entendido agora o que quero. E se possível, responda com urgência, é para o concurso quinzenal.
Eu tenho um jogo infinito sabe, não acaba até que você perca o objetivo dado(morrer ou algo do tipo). Eu queria que viessem obstáculos do lado direito da fase para o player ultrapassá-los. Mudei minha idéia quanto a um terreno acidentado, seria muito complicado, acho que vou com tiles retos mesmo. O que eu queria saber é um terreno acidentado, mas como desisti e sei muito bem fazer com objetos, acho que este tópico se tornou inútil.
PORÉM, ele não se tornou de verdade. Seria possível eu manter os tiles proporcionais? Algo como criar conexões entre os tiles? É porque ficaria algo muito estranho eu ter um bloqueio de 10 cm e depois vir um de 2 metros. Espero que tenha entendido agora o que quero. E se possível, responda com urgência, é para o concurso quinzenal.
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Faça o obstáculo depender do anterior, variando dentro de uma range.
PS: minha entrada também é um jogo infinito mas não tem nada a ver com esse seu
- Código:
NovoTamanho=median(TamanhoMinimo, TamanhoMaximo, Tamanho+random(2*variacao)-variacao)
PS: minha entrada também é um jogo infinito mas não tem nada a ver com esse seu
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Hmmm... Usando o median, eu teria que checar o valor real que ele retornou e criar um objeto de acordo com isso, certo? Vou testar seguindo esse esquema
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
É. não precisa do median pra isso, o median é só pra limitar os valores. Claro que você vai ter que atualizar o valor de "Tamanho", depois (provavelmente pode substituir "NovoTamanho", no código, por "Tamanho", de uma vez).
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Hmmm... Perdão minha ingenuidade mas, poderia fazer um exemplo disso? Não consegui captar muito bem o esquema
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
eu ainda não tenho certeza se entendi o que você está fazendo, mas vou te fazer um exemplo a partir do seguinte pré-suposto: você tem um objeto de um pixel de altura e quer criar colunas formadas pro alturas desse objeto não muito diferentes umas das outras. O código abaixo é pra algum controller.
create:
create:
- Código:
tamanho=room_height/2
varia=30
alarm[0]=room_speed
- Código:
var i;
for(i=0; i<tamanho;i+=1){
instance_create(room_width, room_height-i, obj_wall) //cira as instâncias até na altura do tamanho
}
tamanho=median(0, room_height, tamanho+random(2*varia)-varia) //atualiza o tamanho pra próxima coluna
alarm[0]=room_speed
Última edição por saim em Sex 17 Jun 2011, 09:34, editado 1 vez(es)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
cara... dá ua olhada no meu jogo RALLY e ver se é o que vc tá procurando, se for posso te mandar a engine...
flws..
flws..
Re: Tilesets aleatórios
Nem deu tempo de entregar o jogo xD Mas assim, o objeto é criado várias vezes até chegar ao tamanho. Isso não gera lag? Acho que isso foi para fazer com que apareça um detalhe abaixo para não ficar vazio, mas acho que posso fazer isso com o Draw.
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Mas assim, o objeto é criado várias vezes até chegar ao tamanho. Isso não gera lag?
para não acontecer isso, não deixe o código "solto" em eventos repetitivos(step,draw) .
Re: Tilesets aleatórios
off-topic:
Agora, realmente eu entendi que você precisava de uma coluna sólida da parte de baixo da tela até o topo. Se não for o caso, é fácil adaptar o código pra criar só uma instância (quem sabe, até mudar o image_yscale dela e manter a coluna sólida com um objeto só).
Edit: Ah, e como disse o mrbrum22, o código está num alarm.
Pena. Lembro que eu entri na comunidade pra poder participar de um concurso. Foi graças a você (você tinha uma dúvida e postou na outra comunidade, tals). Até hoje não te vi em nenhum concurso!Markituh escreveu:Nem deu tempo de entregar o jogo
Depende. Se for um pixel só, de altura, até pode gerar, mas por causa da quantidade de objetos na tela, não pelo código que os cria (loops são bem rápidos, precisa de uma quantidade imensa de iterações pra começar a ter lag).markituh escreveu:Mas assim, o objeto é criado várias vezes até chegar ao tamanho. Isso não gera lag? Acho que isso foi para fazer com que apareça um detalhe abaixo para não ficar vazio, mas acho que posso fazer isso com o Draw.
Agora, realmente eu entendi que você precisava de uma coluna sólida da parte de baixo da tela até o topo. Se não for o caso, é fácil adaptar o código pra criar só uma instância (quem sabe, até mudar o image_yscale dela e manter a coluna sólida com um objeto só).
Edit: Ah, e como disse o mrbrum22, o código está num alarm.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Hmmm... As vezes a primeira parede é mais alta que o player, aí fica lolz. Na verdade, eu queria fazer espécies de pisos que vem aparecendo, mas é claro que eles não percam a proporção entre si, que é como eu já disse antes: aparecer um piso de 2 cm e depois um de 2 metros.
Usar o image_yscale seria interessante, mas a imagem ficaria esticada - o que obviamente não fica nada legal - e o valor tinha que ser decimal, pois um yscale equivale à altura da sprite. Para ser mais exato, o que eu quero é isso:
O cenário está em movimento, se o player colidir com o piso vermelho na direita (seja no pé, mão, braço etc) o jogo acaba - nessa parte seria legal colocar uma animação de tombo, e para isso, os pisos teriam que ter larguras iguais a do player, evitando certos bugs de colisão. O único jeito de usar yscale sem esticar seria a imagem ser totalmente limpa no preenchimento, ou seja, ser totalmente vermelha, sem detalhes adicionais(que é a que eu tenho). Nesse modo, a base da sprite seria a room_height, e o tamanho seria definido como a room_height menos a variável tamanho e jogar esse resultado no yscale, estou certo?
Só falta alguns ajustes, como por exemplo, aumentar um pouco a largura da sprite (está muito pequeno, o player morreria facilmente) e fazer ele pisar no obj_wall - outra coisa que pergunto se poderia me ajudar a resolver, estou com bugs horríveis de colisão. Não dá para ver (óbvio, pois não foi o ponto), mas o player fica travando ao andar no piso cinza, não sei porque. Está tudo nos conformes, Solid marcado e colisão com o objeto:
Usar o image_yscale seria interessante, mas a imagem ficaria esticada - o que obviamente não fica nada legal - e o valor tinha que ser decimal, pois um yscale equivale à altura da sprite. Para ser mais exato, o que eu quero é isso:
O cenário está em movimento, se o player colidir com o piso vermelho na direita (seja no pé, mão, braço etc) o jogo acaba - nessa parte seria legal colocar uma animação de tombo, e para isso, os pisos teriam que ter larguras iguais a do player, evitando certos bugs de colisão. O único jeito de usar yscale sem esticar seria a imagem ser totalmente limpa no preenchimento, ou seja, ser totalmente vermelha, sem detalhes adicionais(que é a que eu tenho). Nesse modo, a base da sprite seria a room_height, e o tamanho seria definido como a room_height menos a variável tamanho e jogar esse resultado no yscale, estou certo?
- Código:
with(instance_create(room_width, room_height-32, obj_wall)) {
image_yscale = other.tamanho
}
tamanho=median(0, room_height, tamanho+random(2*varia)-varia) //atualiza o tamanho pra próxima coluna
alarm[1]=room_speed
- Código:
instance_create(room_width, room_height-30, obj_wall)
tamanho=median(0, room_height, tamanho+random(2*varia)-varia) //atualiza o tamanho pra próxima coluna
alarm[1]=14 // Para ficarem juntos um do outro
- Código:
draw_sprite_stretched(sprite_index,0,x,room_height-30-obj_player.tamanho,sprite_width,obj_player.tamanho)
- Código:
with(instance_create(room_width, room_height-30, obj_wall))
{
tamanho = other.tamanho
}
tamanho=median(0, room_height, tamanho+random(2*varia)-varia) //atualiza o tamanho pra próxima coluna
alarm[1]=14
- Código:
tamanho = 0
Só falta alguns ajustes, como por exemplo, aumentar um pouco a largura da sprite (está muito pequeno, o player morreria facilmente) e fazer ele pisar no obj_wall - outra coisa que pergunto se poderia me ajudar a resolver, estou com bugs horríveis de colisão. Não dá para ver (óbvio, pois não foi o ponto), mas o player fica travando ao andar no piso cinza, não sei porque. Está tudo nos conformes, Solid marcado e colisão com o objeto:
- Código:
vspeed = 0
reached_the_jump = 0 // Uma variável (isso aqui limita os pulos)
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Antes de qualquer coisa: do jeito que está, o objeto é criado sempre no mesmo ponto. Mude o segundo argumento do instance_create pra "room_height-tamanho".
Outra coisa: se você define o "tamanho" do obj_wall no "with instance_create", não precisa definir no create. Não tem problema definir, só não precisa.
Ok, agora às dúvidas: daqui, eu não consigo ver as imagens, então vou tentar adivinhar o que rolou até a hora que eu chegar em casa, tá bom?
É perfeitamente possível usar o image_yscale. E fica muito mais fácil se você definir um sprite liso, como máscara, com origem no topo. Daí, no draw, você coloca o sprite que quiser, sem ter que esticar nada. Só tenha um pouco de cuidado no caso de sprites animados (o número de imagens igual facilita um bocado). Pro tamanho da sprite chegar até a base da tela, basta aplicar escala e geometria. Digamos que a altura da sprite seja "a" e a distância do topo dela até a base da tela seja "b" (ou tamanho, no caso): "image_yscale=b/a"
ou, em outras palavras:
Com relação à colisão, eu NUNCA aprendi a usar move_contact de maneira satisfatória. Sabe o que eu fiz? Ao invés de tentar e tentar, resolvi criar meu próprio sistema de colisão. Só que eu acabo fazendo um pra cada jogo. Basicamente, eu checo se há colisão na próxima posição antes de me mover. Em caso positivo, entro num loop que dura até o valor da velocidade, checando por colisão pixel-a-pixel e me movo em todos os pixels em que não há colisão. Depois, zero a velocidade e gravidade, como em qualquer plataforma. Ah, isso não funciona se você usar as built-ins, tá?
Outra coisa: se você define o "tamanho" do obj_wall no "with instance_create", não precisa definir no create. Não tem problema definir, só não precisa.
Ok, agora às dúvidas: daqui, eu não consigo ver as imagens, então vou tentar adivinhar o que rolou até a hora que eu chegar em casa, tá bom?
É perfeitamente possível usar o image_yscale. E fica muito mais fácil se você definir um sprite liso, como máscara, com origem no topo. Daí, no draw, você coloca o sprite que quiser, sem ter que esticar nada. Só tenha um pouco de cuidado no caso de sprites animados (o número de imagens igual facilita um bocado). Pro tamanho da sprite chegar até a base da tela, basta aplicar escala e geometria. Digamos que a altura da sprite seja "a" e a distância do topo dela até a base da tela seja "b" (ou tamanho, no caso): "image_yscale=b/a"
ou, em outras palavras:
- Código:
image_yscale=sprite_get_height(sprite_get_mask(id))/tamanho
Com relação à colisão, eu NUNCA aprendi a usar move_contact de maneira satisfatória. Sabe o que eu fiz? Ao invés de tentar e tentar, resolvi criar meu próprio sistema de colisão. Só que eu acabo fazendo um pra cada jogo. Basicamente, eu checo se há colisão na próxima posição antes de me mover. Em caso positivo, entro num loop que dura até o valor da velocidade, checando por colisão pixel-a-pixel e me movo em todos os pixels em que não há colisão. Depois, zero a velocidade e gravidade, como em qualquer plataforma. Ah, isso não funciona se você usar as built-ins, tá?
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
me parece que vcs estão querendo fazer um sistema de colisão com tiles...
Geralmente eu faço o seguinte:
Antes de me mover, eu checo se há um tile na minha frente:
nunca testei em plataformas, mas nos meus jogos isométricos(que é muito mais difícil de fazer esse sistema de colisão)sempre funcionou.
O segredo é vc separar os tiles que vão ser colisivos em um único layer...
Outra coisa, é atenção no layer usado, para que eles não "tampem" o player.Use um layer maior que o depht do player.
Geralmente eu faço o seguinte:
Antes de me mover, eu checo se há um tile na minha frente:
- Código:
if !tile_layer_find()...
nunca testei em plataformas, mas nos meus jogos isométricos(que é muito mais difícil de fazer esse sistema de colisão)sempre funcionou.
O segredo é vc separar os tiles que vão ser colisivos em um único layer...
Outra coisa, é atenção no layer usado, para que eles não "tampem" o player.Use um layer maior que o depht do player.
- Spoiler:
- Tava fazendo um jogo, com mapas muito grande, e detalhados,e isso caía como uma luva pra não causar leg.
Re: Tilesets aleatórios
Bom, quanto ao segundo argumento do instance_create, eu deixei room_height-30 pois a base da parede é no piso cinza (onde o player pisa antes de aparecer as paredes). Mas acho que não faz diferença definir o segundo argumento, já que o sprite_stretched já realiza tal. Quanto ao image_yscale, vou tentar algo do tipo. Mas ainda assim eu tenho de definir a Y como a base(piso cinza) menos o tamanho. Ficaria assim:
O que seria viável fazer é considerar a altura da sprite como a altura total que ela pode atingir, certo? E também voltar a considerar room_height-30-tamanho. Eu estava errado, dessa vez ficou MUITO PIOR. Aparece traços pretos mais grossos ainda! Não acha que é melhor usar draw_sprite_streched não? Aguardo resposta
Sobre a colisão, parece fazer sentido, já que o sistema de colisão em linguagens como C, C#, C++ etc são feitas manualmente, passo a passo. Lembro-me que um membro postou um tópico perguntando como fazer isso em C++, talvez possa me ajudar. Mas a lógica seria eu usar colision_line para checar colisões com o solo abaixo do player, e se não estiver colidindo, acrescentar a Y, se estiver, deixar a Y igual a Y (parando). Estou certo? Vou tentar aqui
@Mrbrum Olá! Lembro-me de ter visto esse tipo de esquema numa engine do Jiraya, é muito interessante, mas não é uma colisão de tiles que quero fazer, já que é impossível fazer tiles se moverem. Obrigado pela participação, se quiser ajudar com algo, leia minhas mensagens anteriores e as do saim para ver se consegue entender.
- Código:
y = room_height-30-tamanho
image_yscale=sprite_get_height(sprite_get_mask(id))/tamanho
- Código:
/*****************************
* Script sprite_get_mask(id)
*****************************/
var mask,_id;
_id = argument0;
mask = _id.mask_index;
return mask;
Mas se tamanho for 0? E 0 vindo do obj_player, não do Create do obj_wall. Então eu teria de fazer um IF para checar se tamanho é igual a zero, e se for, considerar o tamanho como 1, correto? Bom, parece dar certo, porém continuo a ter problema: o room_height-30-tamanho não resolve, e se eu substituir tamanho por image_yscale é o mesmo que nada - a imagem cresce para baixo, e as vezes, aparece aquele detalhe de sprite esticada (o contorno preto fica grosso).
___________________________________________
ERROR in
action number 1
of Draw Event
for object obj_wall:
Error in code at line 2:
image_yscale=sprite_get_height(sprite_get_mask(id))/tamanho
^
at position 54: Division by 0.
O que seria viável fazer é considerar a altura da sprite como a altura total que ela pode atingir, certo? E também voltar a considerar room_height-30-tamanho. Eu estava errado, dessa vez ficou MUITO PIOR. Aparece traços pretos mais grossos ainda! Não acha que é melhor usar draw_sprite_streched não? Aguardo resposta
Sobre a colisão, parece fazer sentido, já que o sistema de colisão em linguagens como C, C#, C++ etc são feitas manualmente, passo a passo. Lembro-me que um membro postou um tópico perguntando como fazer isso em C++, talvez possa me ajudar. Mas a lógica seria eu usar colision_line para checar colisões com o solo abaixo do player, e se não estiver colidindo, acrescentar a Y, se estiver, deixar a Y igual a Y (parando). Estou certo? Vou tentar aqui
@Mrbrum Olá! Lembro-me de ter visto esse tipo de esquema numa engine do Jiraya, é muito interessante, mas não é uma colisão de tiles que quero fazer, já que é impossível fazer tiles se moverem. Obrigado pela participação, se quiser ajudar com algo, leia minhas mensagens anteriores e as do saim para ver se consegue entender.
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Os dois erros foram causados por enganos meus, Markituh.
Primeiro, a função é "object_get_mask", não "sprite_get_mask", que realmente não existe.
Segundo, eu inverti a ordem dos fatores. O image_yscale deveria ser "tamanho/sprite_get_height(objet_get_mask(id))". Corre o risco do resultado ser 0 e a mask do sprite não ser desenhada, dando negativo em checagens de colisão. Pra resolver, proíba o tamanho de ser 0.
Na hora de definir o tamanho, coloque "median(30, room_height, tamanho-variacao+random(2*variacao))". Isso também te elimina o stress de ter que colocar o "-30" no instance_create (nossa, que alívio imenso, né?).
draw_sprite_stretched não muda o tamanho da mask. Você continua com uma mask do tamanho original do sprite, só o desenho fica esticado, o que te permitiria passar por baixo dos objetos sem detectar colisão. Já usar image_yscale e colocar qualquer coisa no draw event te faz ver um sprite sem escala nenhuma e ainda colidir ao passar por baixo dele.
Primeiro, a função é "object_get_mask", não "sprite_get_mask", que realmente não existe.
Segundo, eu inverti a ordem dos fatores. O image_yscale deveria ser "tamanho/sprite_get_height(objet_get_mask(id))". Corre o risco do resultado ser 0 e a mask do sprite não ser desenhada, dando negativo em checagens de colisão. Pra resolver, proíba o tamanho de ser 0.
Na hora de definir o tamanho, coloque "median(30, room_height, tamanho-variacao+random(2*variacao))". Isso também te elimina o stress de ter que colocar o "-30" no instance_create (nossa, que alívio imenso, né?).
draw_sprite_stretched não muda o tamanho da mask. Você continua com uma mask do tamanho original do sprite, só o desenho fica esticado, o que te permitiria passar por baixo dos objetos sem detectar colisão. Já usar image_yscale e colocar qualquer coisa no draw event te faz ver um sprite sem escala nenhuma e ainda colidir ao passar por baixo dele.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Hmmm... Já está podendo ver imagens? Espero que sim, pois precisas ver isso:
Não sei como descrever isso, mas vamos lá: A sprite fica acima do programado com "Motion Blurs" pretos abaixo e acima dela. Ficou pior que antes >.< Desculpe ficar te enchendo o saco, mas afinal dúvidas são dúvidas não são?
Não sei como descrever isso, mas vamos lá: A sprite fica acima do programado com "Motion Blurs" pretos abaixo e acima dela. Ficou pior que antes >.< Desculpe ficar te enchendo o saco, mas afinal dúvidas são dúvidas não são?
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Tilesets aleatórios
Ainda não posso... deixa eu garantir algumas coisas enquanto isso:
- a origem do sprite está no topo dele?
- você está usando um sprite retangular, chapado?
- você está usando um sprite pra mask e outro pra aparecer na tela?
- pro sprite aparecer na tela, você está usando a função "draw_sprite"?
A resposta pra todas as perguntas deveria ser "sim". Se for, realmente temos um problema. Se não, faça com que seja e teste de novo.
- a origem do sprite está no topo dele?
- você está usando um sprite retangular, chapado?
- você está usando um sprite pra mask e outro pra aparecer na tela?
- pro sprite aparecer na tela, você está usando a função "draw_sprite"?
A resposta pra todas as perguntas deveria ser "sim". Se for, realmente temos um problema. Se não, faça com que seja e teste de novo.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Tilesets aleatórios
Markituh, realmente tá todo bugado, esse código que te passei. Foi mal.
Tente esse aqui, no controller. Depois eu volto a escrever, explicando cada linha, se você não entender alguma coisa:
Create Event:
Alarm Event for alarm 0:
Tente esse aqui, no controller. Depois eu volto a escrever, explicando cada linha, se você não entender alguma coisa:
Create Event:
- Código:
Talarm=15
alarm[0]=Talarm
tamanho=30
varia=30
Alarm Event for alarm 0:
- Código:
with instance_create(room_width, room_height-tamanho, obj_wall){
tam=other.tamanho
image_yscale=(tam-30)/sprite_height
hspeed=-sprite_width/other.Talarm
}
tamanho=median(room_height-30, 31, tamanho-varia+random(2*varia))
alarm[0]=Talarm
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Página 1 de 2 • 1, 2
Tópicos semelhantes
» Duvida Tilesets
» tilesets de plataforma need
» [Resolvido]GM8 Tilesets [resolvido]
» [Sprites and Tilesets]Zombie
» Resultados aleátorios
» tilesets de plataforma need
» [Resolvido]GM8 Tilesets [resolvido]
» [Sprites and Tilesets]Zombie
» Resultados aleátorios
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos
|
|