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. |
[Vídeo] Sistema de Tiro com o Game Maker Studio 2
[Vídeo] Sistema de Tiro com o Game Maker Studio 2
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
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
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
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2
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/
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
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
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
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
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2
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]):
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]):
Re: [Vídeo] Sistema de Tiro com o Game Maker Studio 2
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.
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.
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
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante