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
» player não consegue andar
por 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 1, 2  Seguinte

Ir para baixo

Tilesets aleatórios Empty Tilesets aleatórios

Mensagem por Markituh Qui 09 Jun 2011, 10:08

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
Mas gostaria de outras opniões.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Sex 10 Jun 2011, 11:59

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 15 Jun 2011, 12:31

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.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qua 15 Jun 2011, 17:05

Faça o obstáculo depender do anterior, variando dentro de uma range.
Código:
NovoTamanho=median(TamanhoMinimo, TamanhoMaximo, Tamanho+random(2*variacao)-variacao)

PS: minha entrada também é um jogo infinito Smile mas não tem nada a ver com esse seu
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 15 Jun 2011, 17:47

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
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qui 16 Jun 2011, 01:00

É. 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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qui 16 Jun 2011, 19:08

Hmmm... Perdão minha ingenuidade mas, poderia fazer um exemplo disso? Não consegui captar muito bem o esquema
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qui 16 Jun 2011, 21:27

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:
Código:
tamanho=room_height/2
varia=30
alarm[0]=room_speed
alarm[0]:
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Mr.Brum Sex 17 Jun 2011, 08:35

cara... dá ua olhada no meu jogo RALLY e ver se é o que vc tá procurando, se for posso te mandar a engine...


flws..
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : Tilesets aleatórios 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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 22 Jun 2011, 11:05

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
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Mr.Brum Qua 22 Jun 2011, 11:45

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) .
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : Tilesets aleatórios 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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qua 22 Jun 2011, 12:07

off-topic:
Markituh escreveu:Nem deu tempo de entregar o jogo
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: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.
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).
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 22 Jun 2011, 13:15

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:
Tilesets aleatórios Ilust1
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
Acho que não, o yscale altera digamos, o tamanho por dentro da sprite. A nossa única solução agora seria usar draw_sprite_stretched, então vamos alterar o Alarm para isso
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
Draw do obj_wall
Código:
draw_sprite_stretched(sprite_index,0,x,room_height-30-obj_player.tamanho,sprite_width,obj_player.tamanho)
Porém isso está alterando todas as instâncias. O que eu faço? Bom, como isso está no Draw e ele é executado o tempo todo, é óbvio que todas vão alterar. O que fazer? Salvar o tamanho numa variável local do obj_wall, que pode ser do mesmo nome(afinal, são variáveis locais). O alarm então ficaria assim
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
É claro, definir antes no Create do obj_wall
Código:
tamanho = 0
E o Draw do obj_wall, apenas tiro o "obj_player." e deixo apenas "tamanho".
Tilesets aleatórios Ilust2
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)
Talvez a falta de move_contact_solid você diga, mas já tentei isso e não deu certo. Poderia me ajudar? Obrigado.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qua 22 Jun 2011, 13:54

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:
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Mr.Brum Qua 22 Jun 2011, 14:19

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:
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:
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : Tilesets aleatórios 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

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 22 Jun 2011, 14:28

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:
Código:
y = room_height-30-tamanho
image_yscale=sprite_get_height(sprite_get_mask(id))/tamanho
O desgosto é que o Game Maker avisa que a função sprite_get_mask não existe. Mas, eu posso fazer um script que faz isso.
Código:
/*****************************
* Script sprite_get_mask(id)
*****************************/
var mask,_id;
_id = argument0;
mask = _id.mask_index;
return mask;

___________________________________________
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.
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).

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
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qua 22 Jun 2011, 14:58

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Markituh Qua 22 Jun 2011, 15:16

Hmmm... Já está podendo ver imagens? Espero que sim, pois precisas ver isso:
Tilesets aleatórios Ilust3
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? Happy
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Tilesets aleatórios Empty

Medalhas x 0 Tutoriais x 1 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

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qua 22 Jun 2011, 15:59

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por saim Qui 23 Jun 2011, 09:04

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:

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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tilesets aleatórios Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Tilesets aleatórios Empty Re: Tilesets aleatórios

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Página 1 de 2 1, 2  Seguinte

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos