Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Movimento de Surface Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Movimento de Surface

Mensagem por Christian » Dom Jul 08, 2018 5:20 pm

Olá pessoal. Bom, tenho uma dúvida em relação a Surface.
Quando desenho um efeito de sangue nos blocos utilizando Surface eles ficam bem legais só que, quando o efeito colide com blocos em movimento apenas desenha a Surface na última posição do bloco. Eu queria saber como faço pra deixar a Surface sempre acompanhado o bloco em movimento.
Ps: Disponibilizo o arquivo GMZ.

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Movimento de Surface

Mensagem por All-x » Dom Jul 08, 2018 8:35 pm

Você poderia mostrar os códigos? Só os que está usando na surface. Só pelo que tu disse não ficou claro como está fazendo.

Abraços
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Movimento de Surface

Mensagem por Christian » Dom Jul 08, 2018 11:40 pm

Vou fazer o upload do GMZ. Acho que será melhor de analizar.

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Movimento de Surface

Mensagem por Christian » Ter Jul 10, 2018 10:46 am

Aqui está o link. Desculpa a demora.


... p=drivesdk

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Movimento de Surface

Mensagem por None » Ter Jul 10, 2018 6:21 pm

Olá Christian, a Engine que tu tá usando é do zackbell neh? Amo o conteúdo dele.

Então, o problema não foi difícil de resolver, o que eu fiz (levei um tempinho para entender a Engine) foi criar um novo objeto para acompanhar a velocidade do objeto block (não usei o block por base porque tem muitos dele), depois eu fui no bloodcontroler e no draw event dele eu só garanto que a surf fosse desenhada na posição 0 0 mesmo acrescido da posição do objeto novo (que precisa necessariamente ser criado no 0,0)
Eu também criei uma view e configurei ela, mas isso não é necessário.

Eu te aconselho a dar uma estudada a mais, porque está egine parece "complexa" e eu tô com a impressão que você não consegue entende-la, o que vai acarretar outros problemas futuros... Enfim, espero ter ajudado :)
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Movimento de Surface  Tópico resolvido

Mensagem por All-x » Ter Jul 10, 2018 7:18 pm

O None já respondeu, porém vou deixar meu pitaco.

Vamos aos passos:

- Você criou uma surface que cobre a room toda;
- O sangue é desenhado nessa surface conforme a posição de colisão com o chão;

A surface de sangue é um desenho só, uma imagem só. Quando você desenha em um local depois em outro, quando for mover a surface irá mover ambos. É como desenhar numa folha em branco.

Dai vem três alternativas:

1 - Como o None fez e mover toda a surface com base no objeto.

2 - Ao mover algum bloco, copiar sua posição anterior com surface_copy_part, apagar o que tinha nessa posição e desenhar a parte copiada na nova posição. Isso é viável para blocos que se movem às vezes, já que teria que ser feito para cada instância de bloco. Essa opção seria bem trabalhosa.

3 - Em vez de uma surface pra toda a room, criar uma surface para cada bloco e desenhá-la acima da sprite. Não é simples também, mas é mais fácil e mais garantido que as opções acima.

Criei uma engine aqui, pois fiquei curioso sobre o resultado. Download na descrição do vídeo.

Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Movimento de Surface

Mensagem por Christian » Qua Jul 11, 2018 12:11 am

None escreveu:Olá Christian, a Engine que tu tá usando é do zackbell neh? Amo o conteúdo dele.

Então, o problema não foi difícil de resolver, o que eu fiz (levei um tempinho para entender a Engine) foi criar um novo objeto para acompanhar a velocidade do objeto block (não usei o block por base porque tem muitos dele), depois eu fui no bloodcontroler e no draw event dele eu só garanto que a surf fosse desenhada na posição 0 0 mesmo acrescido da posição do objeto novo (que precisa necessariamente ser criado no 0,0)
Eu também criei uma view e configurei ela, mas isso não é necessário.

Eu te aconselho a dar uma estudada a mais, porque está egine parece "complexa" e eu tô com a impressão que você não consegue entende-la, o que vai acarretar outros problemas futuros... Enfim, espero ter ajudado :)
Sim. Estou estudando a engine de plataforma do Zack. Esta engine é incrível! Estou estudando Surface no momento, consegui fazer um efeito de sangue quase parecido com o do jogo Super Meet Boy. Estava estudando algumas engines com o mesmo efeito por isso cheguei a esse resultado. XD
Acho que me perdi no caminho. Rs. Vou estudar ainda mais. Obrigado pela resposta!

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Movimento de Surface

Mensagem por Christian » Qua Jul 11, 2018 12:13 am

Alex FC escreveu:O None já respondeu, porém vou deixar meu pitaco.

Vamos aos passos:

- Você criou uma surface que cobre a room toda;
- O sangue é desenhado nessa surface conforme a posição de colisão com o chão;

A surface de sangue é um desenho só, uma imagem só. Quando você desenha em um local depois em outro, quando for mover a surface irá mover ambos. É como desenhar numa folha em branco.

Dai vem três alternativas:

1 - Como o None fez e mover toda a surface com base no objeto.

2 - Ao mover algum bloco, copiar sua posição anterior com surface_copy_part, apagar o que tinha nessa posição e desenhar a parte copiada na nova posição. Isso é viável para blocos que se movem às vezes, já que teria que ser feito para cada instância de bloco. Essa opção seria bem trabalhosa.

3 - Em vez de uma surface pra toda a room, criar uma surface para cada bloco e desenhá-la acima da sprite. Não é simples também, mas é mais fácil e mais garantido que as opções acima.

Criei uma engine aqui, pois fiquei curioso sobre o resultado. Download na descrição do vídeo.

Que incrível! Obrigado pela ajuda e pela atenção. Vocês são demais! Tudo já está resolvido.

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Movimento de Surface

Mensagem por Christian » Qua Jul 11, 2018 12:21 am

Se vocês quiserem editar e melhorar fiquem à vontade. Façam uma engine para os membros estudaram também. Não edito a engine porque sou iniciante e meu código (não o de movimento e colisão, créditos ao Zack Bell) está um bocado confuso. Obrigado!

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes