Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
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