Página 1 de 1

[Vídeo] Sistema de Tiro com o Game Maker Studio 2

Enviado: Sex Mai 10, 2019 9:37 am
por None
Vim aqui compartilhar uma série de tutoriais que eu fiz explicando como fazer um sistema de tiro.
Nele eu inicio com alguns elementos bem simples e progressivamente vou aumentando a complexidade.
Você vai aprender a cirar o sistema básico que a maioria das pessoas usa, o de instanciar o tiro e ele se mover até o alvo, mas também vou mostrar como criar um sistema de Raycast para o tiro, fazendo com que ele apareça no alvo caso o mesmo esteja no caminho do tiro.

Segue os links para os vídeos.

Parte 1:


Parte 2


Parte 3


Parte 4

Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2

Enviado: Seg Mai 13, 2019 9:35 pm
por Alex FC
Assisti aos vídeos. Ótima dinâmica, é fácil acompanhar teu raciocínio.

Talvez o algoritmo do Ray Cast precise de alguma otimização, mas ficou muito bom e funcional.

Parabéns! o/

Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2

Enviado: Seg Mai 13, 2019 10:11 pm
por None
Hahahahah
Eu tento simplificar tudo ao máximo, aí o código acaba tendo inconsistências (basta ver o horror que ficou o código de virar para os lados no final).

Sobre o raycast em si, eu não consigo ver muitas formas de deixar ele melhor, um DDA no game Maker iria exigir mais por causa do ponto flutuante e Bresenham é excessivamente complexo para passar em um tutorial de tiro kkkk

Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2

Enviado: Ter Mai 14, 2019 1:43 pm
por Alex FC
Não digo em relação a implementação, mas sim do uso mais otimizado dos recursos.

Ex: Teu script tem objetivo de dar um tiro certeiro no inimigo, mesmo sendo muito rápido (instantâneo, na verdade). Correto? Basta um calculo rápido pra perceber que escolhendo tamanho máximo de 400, haverá na maior parte do tempo 400 chamadas à função collision_line por step (que já percorre os inimigos e piora quando checa precisamente). Fora o draw_line que é sobreposto 400 vezes por step também (Você desenha 399 linhas a toa)[Sei que é pra debug, tanto que tu remove no final]. Tudo isso só vai ser menor se algum inimigo colidir com a linha.

Se o objetivo é acertar primeiro inimigo à colidir com a linha, basta fazer um loop nos inimigos e pegar o mais próximo. No algoritmo que fiz otimizando isso, o collision_line é chamado apenas para os inimigos ativos. A linha não é desenhada com precisão, já que é apenas um debug. Mas se fosse pra ter a linha bastava adicionar um while pra que enquanto houvesse colisão ela ficasse menor.

Achei o método interessante, e é sempre bom discutir as várias formas de fazer algo. Afinal eu só consegui fazer este, vendo o seu primeiro. E certamente usarei nos meus projetos.

Segue o script scr_raycast(obj, distância, direção, desenha linha[true,false]):

SCRIPT: Clique para ver o conteúdo

Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2

Enviado: Ter Mai 14, 2019 3:17 pm
por None
Então... Eu não sei se seu script está realmente otimizado, fazendo uma análise assintótica dele aqui de cabeça, ele parece bem mais pesado que o outro script...

Se tu quiser otimizar ele mesmo, te aconselho a dar uma olhada no algoritmo de bresenham para linhas retas, ele é a forma mais eficiente de criar linhas.