Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Movimento de Surface

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.

Tags:
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 452
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 523

Contato:

Re: Movimento de Surface

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!
 
Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Re: Movimento de Surface

Dom Jul 08, 2018 11:40 pm

Vou fazer o upload do GMZ. Acho que será melhor de analizar.
 
Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Re: Movimento de Surface

Ter Jul 10, 2018 10:46 am

Aqui está o link. Desculpa a demora.


https://drive.google.com/file/d/1NO5MVo ... p=drivesdk
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 140
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 316

Re: Movimento de Surface

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 :)
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 452
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 523

Contato:

Re: Movimento de Surface  Tópico resolvido

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.

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

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Re: Movimento de Surface

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!
 
Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Re: Movimento de Surface

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.
 
Christian
Membro
Membro
Autor
Mensagens: 27
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 12

Re: Movimento de Surface

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!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante