Este tutorial aborda como:
- Fazer o personagem andar e mudar de sprite dependendo de sua posição (Opcional)
- Fazer o inimigo correr atrás do personagem caso ele se aproxime
- Parar de perseguí-lo se atingir uma boa distância
Fazer o personagem andar e mudar de sprite dependendo de sua posição (Opcional)
Bom, iniciamos o tutorial com algo que, como não é o foco principal do que falarei hoje, deixei como opcional. Não ensinarei como fazer sprites de personagens (Até porque eu não sei :P ), então usarei quadrados, um azul para o personagem, e um vermelho para os inimigos, mas cada um terá um sprite diferente para cada posição.
Agora crie um objeto do char, nomeie-o como quiser. No evento Create, crie um Execute Code, agora ponhamos nele o seguinte:
Código: Selecionar todos
velocidade = 5
Agora no Step devemos criar outro Execute Code e colocar os seguintes códigos:
Código: Selecionar todos
if keyboard_check(vk_right){sprite_index=direita if place_free(x+velocidade,y){x+=velocidade}}
Código: Selecionar todos
if keyboard_check(vk_left){sprite_index=esquerda if place_free(x-velocidade,y){x-=velocidade}}
Código: Selecionar todos
if keyboard_check(vk_up){sprite_index=cima if place_free(x,y-velocidade){y-=velocidade}}
if keyboard_check(vk_down){sprite_index=baixo if place_free(x,y+velocidade){y+=velocidade}}
Resultado:
Seu personagem já anda quando uma tecla direcional é pressionada.
Fazer o inimigo correr atrás do personagem caso ele se aproxime
Crie o objeto do inimigo, faça a movimentação inicial como quiser. Agora vem uma parte simples, mas demorei um pouco para descobrir como fazer isso, talvez de primeira não entendam... o raio de visão. No Create do inimigo, crie um Execute Code, e ponha nele isso:
Código: Selecionar todos
velocidade = 3
raio_de_visao = 120 // Você vai entender pra quê isso servirá quando ler abaixo
distancia_x = x - char.x
distancia_y = y - char.y
if distancia_x < 0 {distancia_x *= -1}
if distancia_y < 0 {distancia_y *= -1}
Agora no Step, repita o que colocou no Create (Mas não precisa redefinir a var raio_de_visao, só tirar do código), e mais embaixo isso:
Código: Selecionar todos
if distancia_x < raio_de_visao && distancia_y < raio_de_visao
{mp_potential_step_object(char.x,char.y,velocidade,objeto)}
Agora na colisão do Inimigo com o char, ponha Bonce against solid objects ou crie um código e ponha nele:
Código: Selecionar todos
speed = 0
Você pode encaixá-lo em uma engine de HP, mas talvez eu poste aqui como criar HP, barra de HP para char e inimigos e como atacar e receber dano deles.
Créditos:
matheus.reis