Path Movement Customizado

Path Movement Customizado

Introdução:
O Path Movement é com certeza um dos movimentos mais importantes do MMF2. Mas infelizmente, como todos os outros, essa porra veio bugadona. Então, aqui vamos aprender a fazer um eficaz Path Movement customizado. Existem várias maneiras de fazer um, e vou apresentar aqui a que eu achei mais simples. Para usuários avançados, tenho certeza que não é nada demais, mas lembro que quando eu era novato, tive várias dores de cabeça por causa da droga do Path Movement Pré-definido =D

Do que vamos precisar?
* Uma flag;
* Um Detector de Colisão (opcional, só se quiser que o movimento se repita);

Botando a mão na massa:
Ok. Antes de tudo, crie o Detector de colisão. Esse detector vai servir para quando o objeto bater nele, virar o movimento; ou seja, se estiver indo para a direita e bater nele, vai virar para a esquerda, e vice-versa. Então, copie esse detector e cole (não use Clone Object!) a cópia do lado do primeiro. Deixe um espaço entre os dois. É nesse espaço que o objeto vai se mover. A seguir, insira o objeto entre os dois Detectores. Se fez tudo corretamente, seu Frame deve ter ficado como o esquema a seguir:

Nas propriedades do Detector, desmarque a opção "Visible at Start" (logo na primeira aba). Uma vez que tenha preparado tudo no Frame Editor, vamos aos eventos.



Os dois primeiros eventos que vamos fazer servem para que a plataforma ande para a direita e para a esquerda. É o seguinte: você sabe que uma Flag é como se fosse uma alavanca que liga e desliga, certo? Se não sabia, agora sabe. Ótimo. O que vamos fazer nesses eventos é o seguinte: se a Flag 0 estiver desligada, ela anda para a direita. Se a Flag 0 estiver ligada, ela anda para a esquerda. Também pode ser o contrário (Flag 0 desligada anda para a esquerda e Flag 0 ligada, anda para a direita). Não vai fazer diferença na verdade, a única diferença é a direção inicial. Isso porque quando começa o Frame, a Flag 0 já está desligada. Logo, a primeira direção do movimento vai ser a que usar a Flag 0 desligada.

Chega de papo. Agora, vamos fazer os eventos:
(Objeto) internal flag 0 is off > Set X Position to X("Objeto")+1
(Objeto) internal flag 0 is on > Set X Position to X("Objeto")-1


O que fizemos agora, foi o que foi explicado lá em cima. Quando a Flag 0 estiver desligada, a posição X (horizontal) dela será a própria posição mais 1. E se estiver ligada, a posição X dela será a própria posição menos 1. Esse 1 é a velocidade do movimento. Os sinais de positivo e negativo indicam a direção do movimento; se for positivo, anda para a direita. Se for negativo, anda para a esquerda.

Legal tio Tiago, mas acontece que meu objeto só anda para um lado (aquele que eu usei na Flag 0 desligada). O que eu faço? Fácil. Vamos fazer o seguinte evento:
Collision between (Objeto) and (Detector) > Toggle internal flag 0

O que fizemos aqui? Simples. Se o Objeto colidir com o Detector, ele vai inverter a condição da Flag 0. Logo, se a flag 0 estiver desligada, liga, e vice-versa. Na prática, podemos dizer que muda a direção do movimento. Eis aqui uma imagem do meu Event Editor para você ver como ficou:



Notas:
* Se for utilizar esse método para Plataformas Móveis, não utilize junto com Movimento Pré-definido. Isso porque podem ocorrer alguns bugs.

* Se for utilizar esse método com Platform Movement Object ou Movimento Custom, use um detector para o pé. Então, faça com que se a o detector do pé estiver sobrepondo a plataforma, e a internal flag 0 estiver de tal modo, a posição X do personagem vai ser a própria posição X dele mais a velocidade da plataforma.

* Além de apenas fazer os eventos, tente realmente entendê-los: o que eu ensinei aqui vai ser bem útil no futuro.

Bom galera, é isso. Fiz o tutorial da maneira mais explicada possível, para que qualquer um possa entender. Espero que tenha sido útil =D
Falow o/