1 Imagem, 1 Tutorial #001: Movimento (Plataforma)
Enviado: Sex Mai 17, 2019 1:36 pm
1 Imagem, 1 Tutorial: Movimento (Plataforma)
Acesse o código no PasteBin:
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):
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.
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:
Acesse o código no PasteBin:
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):
Código: Selecionar todos
hspeed = 10000;
hspeed = 5;
hspeed = 10;
Código: Selecionar todos
x += hspeed; // Ou seja, o valor 10 é acrescido
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).
- 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).