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.
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
- hendrickxr
- Novato
- Reações: 0
- Mensagens: 6
Ia de boss ou chefe
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
Re: Ia de boss ou chefe
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:
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:
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:
Este é um método simples, mas talvez não tão fácil de entender.
Dúvidas é só falar! Boa sorte e bons estudos!
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;
}
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
}
Dúvidas é só falar! Boa sorte e bons estudos!
- hendrickxr
- Novato
- Reações: 0
- Mensagens: 6
Re: Ia de boss ou chefe
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: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:
Checamos se ladoDoJogador não vale zero porque este valor faria o sprite sumir!Código: Selecionar todos
if (ladoDoJogador!=0){ image_xscale = ladoDoJogador; }
Se o valor permitir, image_xscale irá espelhar a imagem adequadamente.
A parte de movimentação é com você! Mas você pode fazer desta maneira:
Este é um método simples, mas talvez não tão fácil de entender.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 }
Dúvidas é só falar! Boa sorte e bons estudos!
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.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante