Já chegamos a fazer um tutorial de movimentação para jogos RPG/campo aberto no Game Maker, e agora estaremos fazendo um tutorial de movimentação para jogos de plataforma. Se por acaso você usou os códigos de movimentação do nosso outro tutorial, APAGUE eles e faça do jeito que estaremos explicando aqui, ok?!
Também chegamos a fazer um outro tutorial de colisão no Game Maker, mas neste caso, também se aplica apenas a jogos de RPG e campo aberto.
Esse tutorial de movimentação vem diretamente do canal NoneClass, onde também somos alunos do seu curso. No fim, deixaremos um link para acessar um vídeo completo do mesmo sobre criação de jogos de plataforma, ok?
Objetos de colisão (obj_chao)
Inicialmente, você deve criar dois sprites e dois objetos. As sprites são desenhos que ficam nos objetos. No caso dos objetos, você deve criar um objeto para o jogador e outro objeto para o chão. No nosso exemplo (bem como nos códigos que vamos mostrar abaixo) você deve ter um:
- obj_player (o Objeto do Jogador).
- obj_chao (o Objeto que representa o chão).
Ao criar o obj_chao, crie o objeto e nada mais.
Agora, no obj_player, você deverá criar alguns eventos e colocar alguns códigos. Ao fazer isso, em poucos minutos, você já terá toda a base de colisão e gravidade também do seu jogo de plataforma.
Colocando os códigos para Movimentação, Colisão e Gravidade no seu jogo de plataforma
Agora vamos mexer no objeto obj_player. Nesse obj_player, crie 3 eventos:
- Create
- Step
- End Step
Em Create, você coloca o seguinte código:
velocidade_horizontal = 0;velocidade_vertical = 0;velocidade = 5;gravidade = .3;velocidade_pulo = 8;inputs = {left : (ord("A")),right : (ord ("D")),jump : (ord ("T")),}
OBSERVAÇÃO: para entender melhor sobre colocar as teclas de movimentação (a diferença entre "ord" e "vk", acesse nosso outro tutorial de movimentação.
Em Step, você coloca o seguinte código:
//Controlando o jogadorvar _chao = place_meeting (x, y+1, obj_chao);var _left, _right, _jump;_left = keyboard_check (inputs.left);_right = keyboard_check (inputs.right);_jump = keyboard_check (inputs.jump);velocidade_horizontal = (_right - _left) * velocidade;//Pulandoif (_chao){if (_jump){velocidade_vertical = - velocidade_pulo;}}else{//Aplicando a gravidadevelocidade_vertical += gravidade;}
E, por fim, em End Step, você coloca o seguinte código:
//Checando se estou colidindo na parede.var _colisao = instance_place (x + velocidade_horizontal, y, obj_chao)//se eu colidi eu grudo em quem eu colidiif (_colisao){//Checando se eu estou indo para direitaif (velocidade_horizontal > 0){x = _colisao.bbox_left + (x - bbox_right);}//Checando se eu estou indo para esquerdaif (velocidade_horizontal < 0){x = _colisao.bbox_right + (x - bbox_left);}//Uma vez que eu colidi, não importa o lado, eu parovelocidade_horizontal = 0;}x += velocidade_horizontal;var _colisao = instance_place(x, y + velocidade_vertical, obj_chao )if (_colisao){if (velocidade_vertical > 0){//Indo pra baixoy = _colisao.bbox_top + (y - bbox_bottom);}if (velocidade_vertical < 0){//Indo pra cimay = _colisao.bbox_bottom + (y - bbox_top);}velocidade_vertical = 0;}y += velocidade_vertical;
Testando agora a colisão, movimentação e gravidade no seu projeto
Coloque os objetos da mesma forma que eu coloquei acima. Repare que eu coloquei o obj_player um pouco acima do chão, além de três objetos chão (um será um bloco, o outro o chão e o outro uma parede). Além disso, de acordo com o código colocado acima, ao apertar o "T" do teclado, o personagem vai pular.
Qualquer dúvida, deixe nos comentários.
Nenhum comentário:
Postar um comentário