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.

Ia de boss ou chefe

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
hendrickxr
Novato
Novato
Reações: 0
Mensagens: 6

Ia de boss ou chefe

Mensagem por hendrickxr » Ter Jun 06, 2017 4:12 pm

Estou fazendo um game de plataforma, e estou com dificuldade para o boss vira na direção do player quando o persegue ,procurei um topico sobre isso mais não achei ,se alguem me indicar algum ou me dizer uma forma ou função que me ajude eu agradeço. eu uso game maker 8.1

Avatar do usuário
Willy
Novato
Novato
Reações: 0
Mensagens: 18

Re: Ia de boss ou chefe

Mensagem por Willy » Ter Jun 06, 2017 7:17 pm

O código que você precisa, depende muito do código que você já usa em seu jogo.
O método que eu farei abaixo pode ser facilmente adaptado, desde que você realmente entenda o que foi feito.

A primeira coisa que você precisa saber, é de que lado o jogador está sob o ponto de vista do boss. Usaremos este código no step do boss:

Código: Selecionar todos

ladoDoJogador = sign(obj_jogador.x - x); 

Não se esqueça de declarar a variável "ladoDoJogador" no create (seu valor inicial pode ser -1 ou 1. Você entenderá porque).
Explicação do código: "sign" é uma função que pega o valor que ela carrega como argumento (no caso, obj_jogador.x - x) e retorna -1 se o valor for negativo, 0 se o valor for zero ou 1 se o valor for positivo. Dessa forma, sabemos que se "ladoDoJogador" valer 1, o jogador está a direita do boss, se valer -1, está à esquerda, e, se estiver 0, ele está no mesmo lugar que o boss.

Essa variável é vital para o resto do código, portanto tenha certeza que entendeu sua função.

Feito isso, podemos tratar o sprite para que ele olhe pro lado do jogador. Depende muito da forma que você troca de sprite, mas, no caso, apenas inverterei a imagem dependendo do lado que o personagem está. Ainda no step do boss, coloque:

Código: Selecionar todos

if (ladoDoJogador!=0){
image_xscale = ladoDoJogador;
}
Checamos se ladoDoJogador não vale zero porque este valor faria o sprite sumir!
Se o valor permitir, image_xscale irá espelhar a imagem adequadamente.

A parte de movimentação é com você! Mas você pode fazer desta maneira:

Código: Selecionar todos

//Step ou no local que você faz a movimentação
if (ladoDoJogador == 1){
//Move-se para a direita
}else if (ladoDoJogador ==-1){
//Move-se para a esquerda
}
Este é um método simples, mas talvez não tão fácil de entender.
Dúvidas é só falar! Boa sorte e bons estudos!

Avatar do usuário
hendrickxr
Novato
Novato
Reações: 0
Mensagens: 6

Re: Ia de boss ou chefe

Mensagem por hendrickxr » Sáb Jun 10, 2017 9:34 pm

Willy escreveu:O código que você precisa, depende muito do código que você já usa em seu jogo.
O método que eu farei abaixo pode ser facilmente adaptado, desde que você realmente entenda o que foi feito.

A primeira coisa que você precisa saber, é de que lado o jogador está sob o ponto de vista do boss. Usaremos este código no step do boss:

Código: Selecionar todos

ladoDoJogador = sign(obj_jogador.x - x); 

Não se esqueça de declarar a variável "ladoDoJogador" no create (seu valor inicial pode ser -1 ou 1. Você entenderá porque).
Explicação do código: "sign" é uma função que pega o valor que ela carrega como argumento (no caso, obj_jogador.x - x) e retorna -1 se o valor for negativo, 0 se o valor for zero ou 1 se o valor for positivo. Dessa forma, sabemos que se "ladoDoJogador" valer 1, o jogador está a direita do boss, se valer -1, está à esquerda, e, se estiver 0, ele está no mesmo lugar que o boss.

Essa variável é vital para o resto do código, portanto tenha certeza que entendeu sua função.

Feito isso, podemos tratar o sprite para que ele olhe pro lado do jogador. Depende muito da forma que você troca de sprite, mas, no caso, apenas inverterei a imagem dependendo do lado que o personagem está. Ainda no step do boss, coloque:

Código: Selecionar todos

if (ladoDoJogador!=0){
image_xscale = ladoDoJogador;
}
Checamos se ladoDoJogador não vale zero porque este valor faria o sprite sumir!
Se o valor permitir, image_xscale irá espelhar a imagem adequadamente.

A parte de movimentação é com você! Mas você pode fazer desta maneira:

Código: Selecionar todos

//Step ou no local que você faz a movimentação
if (ladoDoJogador == 1){
//Move-se para a direita
}else if (ladoDoJogador ==-1){
//Move-se para a esquerda
}
Este é um método simples, mas talvez não tão fácil de entender.
Dúvidas é só falar! Boa sorte e bons estudos!
Oi obrigado por responder mais meu problema já foi resolvido na verdade eu já utilizava um método parecido com o seu utilizando sprites a maioria dos inimigos do game faz isso. porem eu queria que o chefe me perseguise ao ficar uma certa distancia usando o distance_to_object e com essa função fica difícil de definir a direção porem ao vasculhar o forum achei auguem que eu li falando sobre método de direção que é parecido com esse:
if obj_player.x > x{x += var_velo ; var_direcao = "right"}
if obj_player.x < x{x -= var_velo ; var_direcao = "left"}
esse código faz nada menos do que verificar se o jogador está na cordenada -x ou +x  do boss ou inimigo que persegue o player, var_velo é a variável que eu criei para definir velocidade e var_direcao  está mais do que claro.
esse maneira foi feita por min baseado na resposta dele eu só não falo o nome dele porque eu não lembro quem é mais de qualquer forma obrigado.

Responder

Quem está online

Usuários navegando neste fórum: Bing [Bot], Google [Bot] e 3 visitantes