Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 505
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 896

Contato:

1 Imagem, 1 Tutorial #001: Movimento (Plataforma)

Sex Mai 17, 2019 1:36 pm

1 Imagem, 1 Tutorial: Movimento (Plataforma)

Imagem

Acesse o código no PasteBin: https://pastebin.com/SPeviKpL


Ferramenta e Versão: Game Maker (7 no mínimo, ideal Studio).

Conceito:

O código para evitar as colisões funciona utilizando o mecanismo interno de movimento do próprio GameMaker. Quando definimos algum valor paras as variáveis hspeed e vspeed, a instância do objeto não se move imediatamente.

Exemplo (Evento Step ou qualquer outro antes do End Step e eventos de desenho):

hspeed = 10000;
hspeed = 5;
hspeed = 10;


A instância não se move em momento algum no código acima. Ela vai se mover assim que terminar Step antes do End Step, em um evento interno aplicando o hspeed (10) no x da instância.

x += hspeed; // Ou seja, o valor 10 é acrescido


Não é exatamente esse o código, pois o sistema interno considera o gravity_direction e afins. Mas o importante é saber que a instância só se move de fato quando alteramos as variáveis x e y. Tudo depende da ordem dos eventos.

O código pra evitar colisões faz uma checagem de colisão somando as velocidades hspeed e vspeedas posições x e y. Caso haja colisão o valor das velocidades é reduzido (Respeitando sua orientação). O ideal seria que essa parte do código fosse a última a ser executada. Então deve se ter cuidado ao modificar as velocidades fora do player.

Vantagens:

  • Pouco código.
  • Aceita números quebrados (Inclusive menores do que 1).
  • Ainda utiliza o sistema nativo de movimento (hspeed e vspeed).

Desvantagens:

  • Não indicado para velocidades acima do tamanho da mascara da sprite. A função place_free usa a mascara para checar a colisão, então caso a velocidade horizontal seja 32px e a mascara tenha 16px, haverá um espaço de 16px sem checagem de colisão). Pode ser contornado aumentando  o número de verificações ao longo do vetor com um laço de repetição.
  • Não pode utilizar o gravity e speed (Ou se usar, fazer os devidos ajustes no código de evitar colisões).
3
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Tags:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante