GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Conectar-se

Esqueci minha senha

Últimos assuntos
» FAROL / LIGHTHOUSE
por Deo Costa Seg 21 Jun 2021, 22:38

» [Steam] Sophstar
por theguitarmester Seg 21 Jun 2021, 21:58

» Salvar Room!
por Rafael Augusto Seg 21 Jun 2021, 02:30

» Personagem interagir com objeto/NPC ao pressionar ENTER
por Wallace_ank Sab 19 Jun 2021, 21:40

» Village Builder
por DJM_JM Sab 19 Jun 2021, 18:55

» Triangle Fly 2: Infinity
por NPH Sab 19 Jun 2021, 14:10

» Problema com mudança de sprites baseado na posição do mouse
por TRFN Sab 19 Jun 2021, 12:11

» Meus tutoriais sobre Game Maker
por pontoevirgula Sab 19 Jun 2021, 09:49

» Square Adventure
por Kleber Craft Qui 17 Jun 2021, 18:45

» Doações
por gilomania3d Qua 16 Jun 2021, 20:20

» Como Manter itens ao passar de fase no Game Maker 2
por Kleber Craft Qua 16 Jun 2021, 20:03

» Multiplayer Local
por theguitarmester Sab 12 Jun 2021, 12:26

» Magic Battle (Título pode mudar)
por theguitarmester Ter 08 Jun 2021, 17:43

» Fazer o Player andar na Parede
por NPH Qua 02 Jun 2021, 21:11

» Problema no contato
por theguitarmester Ter 01 Jun 2021, 10:06

» Venha conferir o Espaço GMBR no Discord!
por Joton Dom 30 Maio 2021, 15:27

» Inimigo vai pra trás quando encosta no Player
por Paulomm32 Qua 26 Maio 2021, 07:52

» Desenvolvimento: Quais linguagens vocês tem conhecimento?
por theguitarmester Ter 25 Maio 2021, 09:45

» Fixar background
por Rafael Augusto Dom 23 Maio 2021, 15:17

» Acervo GMBR
por Mr.Rafael Dom 23 Maio 2021, 12:09

» quando o personagem andar trocar de sprite
por Felipe_Cardoso Sab 22 Maio 2021, 23:36

» problema animação de personagem
por Felipe_Cardoso Sex 21 Maio 2021, 17:30

» iniciar audio/musica junto com a sala
por NPH Qua 12 Maio 2021, 17:09

» mudar de room(cena) quando fosse colidido
por NPH Ter 11 Maio 2021, 22:15

» criar obj aonde o mouse foi clicado
por Felipe_Cardoso Ter 11 Maio 2021, 11:36


Inimigo Seguir o Player e Uma coisa a mais...

Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por Marvin Unmei Qua 07 Abr 2021, 19:32

Olá, então, atualmente tenho tentado criar um jogo estilo CS / Valorant só que absurdamente simplificado, comecei hoje e tive meu primeiro problema: Fazer o Inimigo ir até a bomb independente de onde ela esteja e então roubá-la. Depois de muito tentar encontrei esse código:


if (distance_to_object(Obj_Bomb) < 10000)
{movimento = "perseguir";}

if (movimento = "perseguir")
{
 
   move_towards_point(Obj_Bomb.x,Obj_Bomb.y,8 );
}
else{
   speed = 0;
}

Mas com ele veio um problema: O Inimigo Atravessa as paredes. Como faço para que ele a contorne???

Obrigado pela Atenção.
Marvin Unmei
Marvin Unmei

Games Ranking : Sem avaliações

Data de inscrição : 07/04/2021
Reputação : 0
Número de Mensagens : 1
Prêmios : Inimigo Seguir o Player e Uma coisa a mais... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Unity
  • C#
  • Unreal
  • RPG Maker


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Re: Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por makgamer Sex 09 Abr 2021, 10:11

A função que vc está querendo é essa:

mp_potential_step(xgoal, ygoal, stepsize, checkall)
Link da Documentação

Essa função faz um objeto tentar chegar a um ponto, evitando obstáculos.

No seu exemplo, considerando que as paredes são marcadas como sólidas, ficaria assim:
Código:
mp_potential_step(Obj_Bomb.x,Obj_Bomb.y,8,false);

Espero ter ajudado.
makgamer
makgamer

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 29/03/2009
Reputação : 7
Número de Mensagens : 941
Prêmios : Inimigo Seguir o Player e Uma coisa a mais... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • Unity
  • Java
  • C#
  • Javascript
  • RPG Maker
  • C ou C++
  • Outros


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Re: Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por saim Seg 19 Abr 2021, 08:47

O plano do @makgamer deve funcionar. Vou só explicar um pouco mais o que ele fez, porque o link da documentação, que ele colocou, não está funcionando (pelo menos para mim).

É o seguinte, o game maker tem umas funções nativas de pathfinding, que é exatamente o que você está procurando: um jeito de tentar chegar a um ponto desviando de objetos. No caso, se não me engano, o inimigo vai desviar dos objetos sólidos (é isso que o argumento "checkall" faz, não é?).

O pathfinding vai desenhar um caminho (path - que já vi deixarem visível, pra fase de testes, mas a memória me falha e não sei dizer como faz) e mandar seu objeto percorrer esse caminho.
Pra entender isso, é bom dar uma lida no que são paths. O pathfinding é uma aplicação "turbinada" dos paths. Resumidamente, como você já deve ter imaginado, os paths são caminhos que você define, por qualquer razão, pro objeto percorrer. Pode ser ida-e-volta, pode repetir o caminho em loop (pulando do ponto final pro inicial) e pode até ser um caminho percorrido só uma vez e acabou, que é o que vai acontecer no seu caso - o inimigo vai chegar à bomba e pronto, não precisa mais manter o caminho na memória (se ele quiser levar a bomba pra algum lugar, pode traçar um novo path, não precisa usar o velho).

Beleza, pode parar de ler aqui.

Se quiser fazer alguma coisa mais interessante, com os pathfinds, você pode criar seu próprio algoritmo e deixar de lado a engine nativa do game maker. Tem um modelo pra isso chamado "A*" (lê-se "A-estrela" ou "A-star"). Quando você entende o A*, você fica capacitado a criar algoritmos que levem em conta muitas condições específicas. Cruzar um terreno pegajoso pode ser mais rápido que dar a volta? Considere a velocidade em cada terreno que o algoritmo passa a levar isso em conta. Os pontos a percorrer não estão alinhadinhos? Você pode colocar cada um dos pontos num mapa personalizado. Por aí vai.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 131
Número de Mensagens : 3024
Prêmios : Inimigo Seguir o Player e Uma coisa a mais... 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

Ver perfil do usuário

makgamer, NPH, theguitarmester e DJM_JM gostam desta mensagem

Voltar ao Topo Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Re: Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por DJM_JM Ter 20 Abr 2021, 17:04

@saim escreveu:O plano do @makgamer deve funcionar. Vou só explicar um pouco mais o que ele fez, porque o link da documentação, que ele colocou, não está funcionando (pelo menos para mim).

É o seguinte, o game maker tem umas funções nativas de pathfinding, que é exatamente o que você está procurando: um jeito de tentar chegar a um ponto desviando de objetos. No caso, se não me engano, o inimigo vai desviar dos objetos sólidos (é isso que o argumento "checkall" faz, não é?).

O pathfinding vai desenhar um caminho (path - que já vi deixarem visível, pra fase de testes, mas a memória me falha e não sei dizer como faz) e mandar seu objeto percorrer esse caminho.
Pra entender isso, é bom dar uma lida no que são paths. O pathfinding é uma aplicação "turbinada" dos paths. Resumidamente, como você já deve ter imaginado, os paths são caminhos que você define, por qualquer razão, pro objeto percorrer. Pode ser ida-e-volta, pode repetir o caminho em loop (pulando do ponto final pro inicial) e pode até ser um caminho percorrido só uma vez e acabou, que é o que vai acontecer no seu caso - o inimigo vai chegar à bomba e pronto, não precisa mais manter o caminho na memória (se ele quiser levar a bomba pra algum lugar, pode traçar um novo path, não precisa usar o velho).

Beleza, pode parar de ler aqui.

Se quiser fazer alguma coisa mais interessante, com os pathfinds, você pode criar seu próprio algoritmo e deixar de lado a engine nativa do game maker. Tem um modelo pra isso chamado "A*" (lê-se "A-estrela" ou "A-star"). Quando você entende o A*, você fica capacitado a criar algoritmos que levem em conta muitas condições específicas. Cruzar um terreno pegajoso pode ser mais rápido que dar a volta? Considere a velocidade em cada terreno que o algoritmo passa a levar isso em conta. Os pontos a percorrer não estão alinhadinhos? Você pode colocar cada um dos pontos num mapa personalizado. Por aí vai.

Boa sugestão. Eu desenvolvi um algoritmo A* em um dos meus antigos projetos aqui, com GML.  Usava ds_lists para armazenar os custos e quando encontrava o caminho, retornava um ponto no path recursivamente, até chegar de volta no início. O unico problema é que os pontos no path ficavam invertidos, mas isso foi resolvido facilmente utilizando path_reverse() da gml. Se encontrar o codigo do projeto antigo, posto aqui depois.

Um adendo sobre uma implementação própria do A*, é que provavelmente não vai ser mais eficiente que a já implementada no GML, que é uma solução mais otimizada para a engine. Por isso, salvo em casos raros, vale mais a pena utilizar mp_grids pra desenhar o path, pelo menos no meu antigo projeto, teve desempenho bem melhor em mapas maiores. Se não tiver uma necessidade muito especifica, por via de regra é melhor utilizar o que já existe na engine, poupa esforço e apresenta um resultado melhor, no final das contas.

EDIT: Se o criador do topico quiser testar por curiosidade um algoritmo de pathfinding proprio, vale a pena olhar o algoritmo de menor caminho de dijkstra, é menos eficiente que o A*, mas é um bom ponto de partida, pois é mais fácil de implementar. Happy
DJM_JM
DJM_JM

Games Ranking : Sem avaliações

Data de inscrição : 07/07/2015
Reputação : 0
Número de Mensagens : 35
Prêmios : Inimigo Seguir o Player e Uma coisa a mais... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ver perfil do usuário http://www.gremioemfoco.info

Voltar ao Topo Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Re: Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por makgamer Ter 27 Abr 2021, 22:39

@saim escreveu:O plano do @makgamer deve funcionar. Vou só explicar um pouco mais o que ele fez, porque o link da documentação, que ele colocou, não está funcionando (pelo menos para mim).

É o seguinte, o game maker tem umas funções nativas de pathfinding, que é exatamente o que você está procurando: um jeito de tentar chegar a um ponto desviando de objetos. No caso, se não me engano, o inimigo vai desviar dos objetos sólidos (é isso que o argumento "checkall" faz, não é?).

O pathfinding vai desenhar um caminho (path - que já vi deixarem visível, pra fase de testes, mas a memória me falha e não sei dizer como faz) e mandar seu objeto percorrer esse caminho.
Pra entender isso, é bom dar uma lida no que são paths. O pathfinding é uma aplicação "turbinada" dos paths. Resumidamente, como você já deve ter imaginado, os paths são caminhos que você define, por qualquer razão, pro objeto percorrer. Pode ser ida-e-volta, pode repetir o caminho em loop (pulando do ponto final pro inicial) e pode até ser um caminho percorrido só uma vez e acabou, que é o que vai acontecer no seu caso - o inimigo vai chegar à bomba e pronto, não precisa mais manter o caminho na memória (se ele quiser levar a bomba pra algum lugar, pode traçar um novo path, não precisa usar o velho).

Beleza, pode parar de ler aqui.

Se quiser fazer alguma coisa mais interessante, com os pathfinds, você pode criar seu próprio algoritmo e deixar de lado a engine nativa do game maker. Tem um modelo pra isso chamado "A*" (lê-se "A-estrela" ou "A-star"). Quando você entende o A*, você fica capacitado a criar algoritmos que levem em conta muitas condições específicas. Cruzar um terreno pegajoso pode ser mais rápido que dar a volta? Considere a velocidade em cada terreno que o algoritmo passa a levar isso em conta. Os pontos a percorrer não estão alinhadinhos? Você pode colocar cada um dos pontos num mapa personalizado. Por aí vai.

Realmente estranho, aqui o link está abrindo perfeitamente 🙁

Mas, em todo caso, você explicou muito melhor do que qualquer documentação faria, hehe.

No passado eu já implementei o algoritmo A* em um dos meus projetos, adequando às minhas necessidades esperando um ganho de performance, mas falhei miseravelmente. Como o amigo aqui em cima falou, dificilmente um algoritmo feito em GML vai ganhar em performance do algoritmo nativo feito para a engine.

Ainda assim, recomendo a experiência, é um ótimo aprendizado.

Agradeço por ter complementado minha resposta, acho que fui muito breve mesmo 🙂
makgamer
makgamer

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 29/03/2009
Reputação : 7
Número de Mensagens : 941
Prêmios : Inimigo Seguir o Player e Uma coisa a mais... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 2.0
  • Unity
  • Java
  • C#
  • Javascript
  • RPG Maker
  • C ou C++
  • Outros


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Inimigo Seguir o Player e Uma coisa a mais... Empty Re: Inimigo Seguir o Player e Uma coisa a mais...

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão neste fórum:
Você não pode responder aos tópicos neste fórum