Descricao: Como fazer movimentos, gravidade e pulos em jogos isometricos.Nivel: IntermediarioRequerimentos: Lite/ProOla!Estarei fazendo alguns tutoriais sobre jogos isometricos. Como serao muito compridos, irei dividi-los em partes. Na primeira parte, sera ensinado como fazer movimentos em jogos isometricos, pulos e gravidade, e colisao com blocos.Vamos Comecar!1- Uma breve explicacaoMuitos tem dificuldade ao fazer pulos em jogos isometricos. Se x representa o comprimento e y a largura, o que representa a altura? Assim como no 3D, o ponto z representa a altura.Os pulos e a gravidade serao coordenados pelo ponto z, enquanto x e y coordenam os movimentos do player.2- Movimentacao do PlayerOs tutoriais explicarao somente como movimentar um objeto, entao nao ha necessidade de usar muitas sprites.Crie uma sprite e chame-a de spr_player. E nela carregue esta imagem: Crie outra sprite e chame-a de mask_player. Carregue esta imagem: . Depois, altere sua Origin para X=0 e Y=-16.Crie um objeto chamado obj_player. Coloque nele a sprite spr_player e a mask mask_player.No evento Create coloque:CODIGO:z=0;zland=0;zspeed=0;zgravity=0;-Explicando-z=0;Esta variavel definira a altura do player.zland=0;Esta variavel definira a altura minima, evitando que o player atravesse o "chao".zspeed=0;Esta variavel definira a altura do pulo.zgravity=0;Define a gravidade do player.Agora no evento Step coloque:CODIGO:if(keyboard_check(vk_up) && keyboard_check(vk_left)){ vspeed=-2; hspeed=-4;}else if(keyboard_check(vk_up) && keyboard_check(vk_right)){ vspeed=-2; hspeed=4;}else if(keyboard_check(vk_down) && keyboard_check(vk_left)){ vspeed=2; hspeed=-4;}else if(keyboard_check(vk_down) && keyboard_check(vk_right)){ vspeed=2; hspeed=4;}else if(keyboard_check(vk_up)){ vspeed=-2; hspeed=0;}else if(keyboard_check(vk_down)){ vspeed=2; hspeed=0;}else if(keyboard_check(vk_left)){ hspeed=-4; vspeed=0;}else if(keyboard_check(vk_right)){ hspeed=4; vspeed=0;}else{ vspeed=0; hspeed=0;}-Explicando-Este codigo e muito grande para explicar um por um os itens. Eles so farao o player andar. Repare que vspeed e menor do quehspeed, pois se nao fosse, daria impressao de que o player esta correndo para cima e para baixo, e nao andando Ainda no evento Step coloque:CODIGO:if(keyboard_check_pressed(vk_space) && z=zland) zspeed=7;z+=zspeed;zspeed-=zgravity;if(z>zland) zgravity=0.5;if(z{ z=zland; zgravity=0;}depth=-y-z/2;-Explicando-if(keyboard_check_pressed(vk_space) && z=zland) zspeed=7;Se for pressionada a tecla Space e o player estiver no chao, ele pulara.z+=zspeed;A altura ira aumentando conforme a velocidade do pulo.zspeed-=zgravity;A velocidade ira diminuir aos poucos, conforme a gravidade.if(z>zland) zgravity=0.5;Se o objeto nao estiver no chao, a gravidade sera de 0.5if(z{ 1- Movimentacao BasicaPrimeiramente, vamos fazer o NPC se mover para as diagonais, em direcoes randomicas.Crie um sprite e chame-a de spr_npc. Carregue esta imagem: Crie mais uma sprite e chame-a de mask_npc. Carregue esta imagem: Crie um objeto chamado obj_npc. Coloque nele a sprite spr_npc e a mask mask_npc.No evento Create coloque:CODIGO:z=0;hspeed=choose(2,-2);vspeed=choose(1,-1);-Explicando-z=0;Define a altura do NPC. Pode ser alterada para fazer NPCs de diferentes alturas.hspeed=choose(2,-2);vspeed=choose(1,-1);Define as velocidades horizontal e vertical, usando valores aleatorios, alterando a direcao dos do NPC.No evento Step coloque:CODIGO:if(place_snapped(32,16)){ hspeed=choose(hspeed,hspeed,2,-2); vspeed=choose(vspeed,vspeed,1,-1);}depth=-y-z;-Explicando-if(place_snapped(32,16) && z=zland){hspeed=choose(hspeed,hspeed,2,-2);vspeed=choose(vspeed,vspeed,1,-1);}Se estiver alinhado a grade (32x16) e estiver no chao, ele podera escolher outra direcao, ou continuar na mesma. Repare que as variaveis hspeed e vspeed aparecem duas vezes nos respectivos codigos. Isso faz com que o objeto nao mude de direcao a toda hora, continuando no trajeto em que esta.depth=-y-z;Define a profundidade do objeto, relacionando a posicao y e sua altura.Adicione um evento de colisao com o obj_player e coloque:CODIGO:if(z=other.z){ hspeed=-hspeed; vspeed=-vspeed;}-Explicando-Se o NPC colidir com o player e eles estiverem na mesma altura, o NPC, ele ira inverter a direcao.Agora no evento de colisao com o obj_block coloque:CODIGO:if(z=other.z-16){ hspeed=-hspeed;