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: Selecionar todos
patrulhar=true
fim_patrulha=false
ponto_atual=0
patrulha_total=0
- 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.
Código: Selecionar todos
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
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: Selecionar todos
patrulha_x[patrulha_total]=argument0
patrulha_y[patrulha_total]=argument1
patrulha_total+=1
Código: Selecionar todos
adicionar_ponto_patrulha(20,20)
adicionar_ponto_patrulha(150,50)
adicionar_ponto_patrulha(80,180)
3. Movimentação de patrulha:
Agora no Step do objeto vai o sistema de movimentação:
Código: Selecionar todos
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
}
}
}
ADICIONAIS
1. Desenhando os pontos para Debugging: Crie uma variável qualquer (no meu caso nomeei w) no Create com valor 0:
Código: Selecionar todos
w=0
Código: Selecionar todos
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)
}
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: Selecionar todos
adicionar_ponto_patrulha(x+20,y+20)
adicionar_ponto_patrulha(x+150,y+50)
adicionar_ponto_patrulha(x+80,y+180)
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: Selecionar todos
delay=40
Código: Selecionar todos
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
{
ponto_atual+=1
}
Código: Selecionar todos
if distance_to_point(patrulha_x[ponto_atual],patrulha_y[ponto_atual]) <=0
{
patrulhar=false
alarm[0]=delay
}
Código: Selecionar todos
ponto_atual+=1
patrulhar=true
Talvez ponha mais alguns adicionais posteriormente, mas por enquanto é isso. VALEU!