Olá amigos, tudo bem? Estou a algumas horas ( T.T ) tentando resolver meu problema de movimentação de inimigos no estilo space invaders e estou com um certo problema na hora de todos os inimigos, quando chegarem no limite da tela, mudarem a direção. Eu criei um array de inimigos para alinhar todos na tela e acrescentei x += 1 neles para se movimentarem para direita. Até ai tudo bem, eles se movem todos juntos em sincronia, mas quando peço para voltarem x-= 1; eles vao um de cada vez, até que cada um chegue na borda e mude a direção. Depois disso tentei alterar a veocidade (x) de todos ao mesmo tempo, então criei um with (nao sei se ele serve muito para essa ocasião) mas utilizando apenas a posição (x) ele não funciona, apenas um volta e não todos. Depois tentei alterar o hspeed, o que funcionou muito bem, mas acho que por ser velocidade uniformemente variada, os inimigos meio que tem um pequeno impulso antes de voltar, o que deixa o movimento bem falso. Depois tentei colocar obj_inimigo.x dentro do with pra mudarem de movimento, isso até que funcionou, mas metade dos inimigos sumiram da tela e outra metade fez o que eu esperava.
O que eu gostaria de saber é, como eu poderia fazer esse movimento sincronizado dos inimigos da tela no estilo Space Invaders, e o que talvez eu esteja fazendo de errado =[. Não preciso do código pronto, mas se alguém puder me exemplificar a maneira ficaria muito agradecido.
Código: Selecionar todos
// Maneira de como estou instanciando os inimigos na tela
// esse é um create no obj controle
for (i = 0 ; i < 2 ; i++){
for (j = 0 ; j < 2 ; j++){
instance_create( i * 50 + ( room_width / 2) , j * 50 + (room_height / 2 ),obj_inimigo);
}
}
O código a baixo é a maneira que fiz do inimigo bater e voltar no canto direito para depois mudar de direção. Mas nao funciona da maneira que eu quero, ele muda a direção de apenas a primeira coluna de inimigos, e não de todos de uma vez. Como eu poderia mudar de todos de uma vez?
Código: Selecionar todos
///movimento inimigo ida e volta na tela
with (obj_inimigo){
if (x < 350 && flag == true){
x+= 5;
}
if (x >= 350 && flag == true){
flag = false;
}
if (flag == false){
x-=5;
}
if (x <= 32){
flag = true;
}
}
Atenciosamente,
Epipoca.