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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[Tutorial] Patrulha Top-Down

2 participantes

Ir para baixo

[Tutorial] Patrulha Top-Down Empty [Tutorial] Patrulha Top-Down

Mensagem por Gonçalves Qua 18 Jul 2012, 19:01

SISTEMA DE PATRULHA TOP-DOWN

Bom, vou ensinar como criar um sistema de patrulha para jogos top-down, é simples.

1. Definindo as configurações de patrulha: Primeiramente vamos definir as configurações da patrulha no Create do objeto:

Código:
patrulhar=true
fim_patrulha=false
ponto_atual=0
patrulha_total=0

Sendo que:

  • patrulhar define se esse objeto vai patrulhar ou não.
  • fim_patrulha define se ele vai parar após passar por todos os pontos de patrulha.
  • patrulha_total definirá por quantos pontos ele passará, deixe 0.
  • ponto_atual define o ponto inicial, deixe 0 caso não saiba o que está fazendo.


2. Definindo os pontos de patrulha: Abaixo dos últimos códigos definiremos os pontos de patrulha x e y usando arrays: (MÉTODO 1)

Código:
patrulha_x[0]=20
patrulha_y[0]=20

patrulha_x[1]=150
patrulha_y[1]=50

patrulha_x[2]=80
patrulha_y[2]=180

patrulha_total=3

Sempre seguindo a array, e definindo a n° de patrulhas ao fim...
Se você quiser faço como eu (MÉTODO 2), crie um script chamado adicionar_ponto_patrulha(x,y) com o seguinte conteúdo:

Código:
patrulha_x[patrulha_total]=argument0
patrulha_y[patrulha_total]=argument1
patrulha_total+=1

O código acima então ficará assim:

Código:
adicionar_ponto_patrulha(20,20)
adicionar_ponto_patrulha(150,50)
adicionar_ponto_patrulha(80,180)

A variável patrulha_total já terá o valor 3 automaticamente por causa do script.

3. Movimentação de patrulha:

Agora no Step do objeto vai o sistema de movimentação:

Código:
if patrulhar=true
{
    mp_potential_step(patrulha_x[ponto_atual],patrulha_y[ponto_atual],2,0)

    if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
    {
    ponto_atual+=1
    }
   
    if ponto_atual >= patrulha_total
    {
        if fim_patrulha = true
        {
        patrulhar=false
        }
        else
        {
        ponto_atual=0
        }
    }

}

if patrulhar=true vai checar se a variável de patrulha do objeto está ativada, se sim, mp_potential_step vai fazer com que ele ande até o ponto de patrulha atual. if distance_to_point vai checar se ele chegou, se sim, passar pro próximo. if ponto_atual >= patrulha_total checa se ele passou por todos os pontos, e se a variável fim_patrulha for true, ele para, caso contrário, ele vai voltar pro primeiro ponto e fazer tudo de novo.

ADICIONAIS

1. Desenhando os pontos para Debugging: Crie uma variável qualquer (no meu caso nomeei w) no Create com valor 0:

Código:
w=0

E no Draw use:

Código:
draw_sprite(sprite_index,image_index,x,y)

for (w=0; w<patrulha_total; w+=1)
{
    draw_circle_color(patrulha_x[w],patrulha_y[w],5,c_red,c_red,1)
}

Isso vai desenhar a sprite e círculos nos pontos de patrulha do objeto.

2. Use a relatividade à posição atual para poder usar vários objetos: Ao invés de usar apenas números para dar um ponto de patrulha, você pode usar em relação ao xy do objeto:

Código:
adicionar_ponto_patrulha(x+20,y+20)
adicionar_ponto_patrulha(x+150,y+50)
adicionar_ponto_patrulha(x+80,y+180)

Assim você poderá colocar vários objetos iguais e eles irão patrulhar, sem ir pro mesmo lugar.

3. Crie um "delay time": Caso você queira que o objeto, ao chegar em um ponto, dê uma parada para depois continuar, crie uma variável delay no create, siga meu exemplo se quiser:

Código:
delay=40

Agora subsititua essa parte do código normal de movimentação:

Código:
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
    {
    ponto_atual+=1
    }

Por esse:

Código:
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
    {
    patrulhar=false
    alarm[0]=delay
    }

E no evento Alarm 0 use:

Código:
ponto_atual+=1
patrulhar=true

Assim ele vai esperar 40 frames antes de ir pro próximo ponto.

Talvez ponha mais alguns adicionais posteriormente, mas por enquanto é isso. VALEU!
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : [Tutorial] Patrulha Top-Down Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

[Tutorial] Patrulha Top-Down Empty Re: [Tutorial] Patrulha Top-Down

Mensagem por Thyago Sáb 13 Abr 2013, 03:13

.E aí cara blz?
.Vi apenas um pequeno erro no seu código...

Código:
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
    {
    patrulhar=false
    alarm[0]=delay
    }

.Dessa maneira o alarm[0] não sera executado nunca,vai ser sempre =delay.

Isso deve resolver.

Código:
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0 a
    {
    patrulhar=false
    if(alarm[0]=-1){alarm[0]=delay}
    }

.Quando o alarm executa ele fica com valor -1,então só de o alarm se o valor dele for -1.

.Até mais
Thyago
Thyago

Games Ranking : Nota B

Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios : [Tutorial] Patrulha Top-Down Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

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

Ir para o topo Ir para baixo

[Tutorial] Patrulha Top-Down Empty Re: [Tutorial] Patrulha Top-Down

Mensagem por Gonçalves Sáb 13 Abr 2013, 03:52

Então cara, esse código só ocorre se patrulhar for true, e antes de ativar o alarme definiu ela como false (sendo ativada novamente apenas no alarme).

Mas valeu a intenção! XD
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : [Tutorial] Patrulha Top-Down Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

[Tutorial] Patrulha Top-Down Empty Re: [Tutorial] Patrulha Top-Down

Mensagem por Thyago Sáb 13 Abr 2013, 08:51

Verdade,esta mais para cima,desculpe entao :-)

Thyago
Thyago

Games Ranking : Nota B

Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios : [Tutorial] Patrulha Top-Down Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

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

Ir para o topo Ir para baixo

[Tutorial] Patrulha Top-Down Empty Re: [Tutorial] Patrulha Top-Down

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