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

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

3 participantes

Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por BrunoSA Seg 22 Out 2012, 22:41

Ola amigos membros do GMBR,

Preciso de ajuda. Não consigo programar um inimigo que persiga com eficacia o obj_player, que consiga pular blocos, etc.

Também, existe outro impasse, preciso que quando o obj_player pule esse obj_inimigo, o obj_inimigo deslize um pouco antes de mudar de direção.

Exemplo:
Inimigo vem em minha direção, eu pulo por cima dele e ele desliza um pouco antes de voltar a me perseguir.

Desde já, agradeço.
BrunoSA
BrunoSA

Data de inscrição : 18/09/2012
Reputação : 0
Número de Mensagens : 17
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] 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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por vini_gd Ter 23 Out 2012, 13:21

Cara
Essa é só a parte pra seguir o obj_player

Pra ele(obj_inimigo) pular os blocos é simples

No evento Step dele

if(speed>0 and place_meeting(x+2,y,obj_bloco) or place_meeting(x-2,y,obj_bloco))
//se a velocidade for maior que 0 e estiver colidindo com o objeto bloco1 a 2 pixels a direita o 2 pixel a esquerda
{
move_contact_solid(90,40);
//move o objeto na direção 90(pra cima) 40 pixels(que é a altura que eu quero que ele pule
}

if(point_distance(x,y,obj_player.x,obj_player.y)<250)
//se a distancia entre o x e y do dois for menor que 250
{
speed = 1.5;
//esta parte e para direcionar o sprite


if(x<obj_play.x)
{
direction = 0;// 0 = direita
sprite_index = spr_direita;// obs: esse é o nome da minha sprite
}
if(x>obj_play.x)
{
direction = 180;// 180 =esquerda;
sprite_index = spr_esquerda;
}
}
vini_gd
vini_gd

Data de inscrição : 02/09/2012
Reputação : 1
Número de Mensagens : 66
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] 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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por Thiago_o_programador Ter 23 Out 2012, 13:42

Para a segunda duvida basta no lugar de usar valores absolutos, usar var's, no create coloque:
Código:
vel=0;acel=0
STEP:
Código:
if obj_player.x>x {if vel<6 acel=.5;else acel=0}else{if vel>-6 acel=-.5;else acel=0}
END STEP:
Código:
vel+=acel
x+=vel

flw's!
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por BrunoSA Ter 23 Out 2012, 18:09

Ola,

Primeiramente gostaria de agradece-los pela rapidez na resposta.
Funcionou muito bem, apliquei ambos os codes, porem tive outro problema.
Agora o obj me segue sempre e não colide com as paredes.

Segue o code
Código:
//gravidade
if place_free(x,y+2)
{vspeed=1 hspeed=0}
else
{vspeed=0}



if(point_distance(x,y,obj_player.x,y)<250)
//se a distancia entre o x e y do dois for menor que 250
{
if obj_player.x>x {if vel<6 acel=.5;else acel=0 sprite_index=spr_cupcakr_andando }else{if vel>-6 acel=-.5;else acel=0 sprite_index=spr_cupcakr_andando_esquerda}

//esta parte e para direcionar o sprite


if(x<obj_player.x)
{
direction = 0;// 0 = direita
sprite_index = spr_cupcakr_andando;// obs: esse é o nome da minha sprite
}
if(x>obj_player.x)
{
direction = 180;// 180 =esquerda;
sprite_index = spr_cupcakr_andando;
}
}

Desde já, agradeço.
BrunoSA
BrunoSA

Data de inscrição : 18/09/2012
Reputação : 0
Número de Mensagens : 17
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] 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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por vini_gd Ter 23 Out 2012, 22:13

Faltou esse código:

Que faz o objeto pular sempre que colidir com o objeto bloco

Código:
if(speed>0 and place_meeting(x+2,y,obj_bloco) or place_meeting(x-2,y,obj_bloco))
//se a velocidade for maior que 0 e estiver colidindo com o objeto bloco1 a 2 pixels a direita o 2 pixel a esquerda
{
move_contact_solid(90,40);
//move o objeto na direção 90(pra cima) 40 pixels(que é a altura que eu quero que ele pule
}

E o objeto te segue sempre por causa deste trecho aqui.

Código:
if(point_distance(x,y,obj_player.x,y)<250)

Se a distancia for menor que 250 ele vai te seguir
é só diminuir o valor ex: 100 // vai te seguir sempre que estiver a menos de
100 pixels.
vini_gd
vini_gd

Data de inscrição : 02/09/2012
Reputação : 1
Número de Mensagens : 66
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] 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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por Thiago_o_programador Qua 24 Out 2012, 18:22

E só completando, em uma parede que você não quiser que ele pule, apenas pare, use:
Código:
obj= //nome do objeto que se está colidindo
  x = xprevious;
  y = yprevious;
  if (abs(hspeed) >= abs(vspeed) && not place_meeting(x+hspeed,y,obj))
    { x += hspeed; exit;}
 if (abs(vspeed) >= abs(hspeed) && not place_meeting(x,y+vspeed,obj))
    { y += vspeed; exit;}
  speed = 0
  vel=0

Flw's!
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por BrunoSA Qua 24 Out 2012, 19:03

Ola pessoal,

Mesmo assim ele continua a atravessar os blocos.
Desconfio que seja seja devido á aceleração dele.
Segue o codigo
Código:


if(speed>0 and place_meeting(x+2,y,obj_pedra) or place_meeting(x-2,y,obj_pedra))
//se a velocidade for maior que 0 e estiver colidindo com o objeto bloco1 a 2 pixels a direita o 2 pixel a esquerda
{
move_contact_solid(90,40);
//move o objeto na direção 90(pra cima) 40 pixels(que é a altura que eu quero que ele pule
}

if(point_distance(x,y,obj_player.x,obj_player.y)<250)
//se a distancia entre o x e y do dois for menor que 250
{
speed = 1.5;
//esta parte e para direcionar o sprite


if(x<obj_player.x)
{
direction = 0;// 0 = direita
sprite_index = spr_cupcakr_andando;// obs: esse é o nome da minha sprite
}
if(x>obj_player.x)
{
direction = 180;// 180 =esquerda;
sprite_index = spr_cupcakr_andando_esquerda;
}
}
if obj_player.x>x {if vel<6 acel=.5;else acel=0}else{if vel>-6 acel=-.5;else acel=0}

obj=obj_pedra //nome do objeto que se está colidindo
  x = xprevious;
  y = yprevious;
  if (abs(hspeed) >= abs(vspeed) && not place_meeting(x+hspeed,y,obj))
    { x += hspeed; exit;}
 if (abs(vspeed) >= abs(hspeed) && not place_meeting(x,y+vspeed,obj))
    { y += vspeed; exit;}
  speed = 0
  vel=0
BrunoSA
BrunoSA

Data de inscrição : 18/09/2012
Reputação : 0
Número de Mensagens : 17
Prêmios : seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] 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

Ir para o topo Ir para baixo

seguir - Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)] Empty Re: Obj_inimigo seguir personagem. Atrito. [game 2d(estilo Mario Brs.)]

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos