Página 1 de 1

GM desconsiderando máscara e colidindo com sprite inteira

Enviado: Qua Jan 12, 2022 5:00 pm
por Mysterious Stranger
Boa tarde, pessoal.

Eu estou com um problema q surgiu aqui. Primeira vez q acontece. Não sei se mudaram algo nessas últimas builds. Eu estou fazendo um jogo de plataforma com essa formiga. Ela tem bastante espaço vazio e eu defini a máscara aí onde tá vermelho. Estou usando a função place_meeting() e era para o GM considerar a máscara para a colisão, mas ele está considerando o espaço vazio também. Aí fica parecendo que tem uma parede invisível entre o personagem e o chão ou as paredes.

Características do meu objeto:
- Estou carregando a sprite pelo comando de desenho draw_sprite_ext(), mas estou definindo a mesma também no STEP informando uma variável sprite = SPRITE_FORMIGA e setando a mask_index = sprite.


// linha de código da colisão
if( place_meeting( x + behavior.hspd, y, block ) ){
... ações
}


Onde behavior.hspd é a velocidade horizontal e block o objeto na qual a formiga colide.

Valeu qualquer luz.

Re: GM desconsiderando máscara e colidindo com sprite inteira  Tópico resolvido

Enviado: Qua Jan 12, 2022 5:16 pm
por All-x
Sempre é bom fazer um debug pra saber se essa é realmente sua mascara que está sendo utilizada. Coloque isso no Draw da formiga:

Código: Selecionar todos

// Desenha a si mesmo
draw_self();

// Desenha caixa de colisão (Bounding Box)
draw_rectangle_color(bbox_left, bbox_top, bbox_right, bbox_bottom, c_red, c_red, c_red, c_red, 1);

// Desenha o nome da sprite que está utilizando no momento como máscara
draw_text(x, bbox_bottom + 8, sprite_get_name(mask_index));
Geralmente eu crio uma máscara separada, um retângulo mesmo. Pois dependendo como configurou a sprite, cada frame pode ter uma mascara de tamanho diferente.

Re: GM desconsiderando máscara e colidindo com sprite inteira

Enviado: Qua Jan 12, 2022 5:37 pm
por Mysterious Stranger
All-x escreveu: Qua Jan 12, 2022 5:16 pm Sempre é bom fazer um debug pra saber se essa é realmente sua mascara que está sendo utilizada. Coloque isso no Draw da formiga:

Código: Selecionar todos

// Desenha a si mesmo
draw_self();

// Desenha caixa de colisão (Bounding Box)
draw_rectangle_color(bbox_left, bbox_top, bbox_right, bbox_bottom, c_red, c_red, c_red, c_red, 1);

// Desenha o nome da sprite que está utilizando no momento como máscara
draw_text(x, bbox_bottom + 8, sprite_get_name(mask_index));
Geralmente eu crio uma máscara separada, um retângulo mesmo. Pois dependendo como configurou a sprite, cada frame pode ter uma mascara de tamanho diferente.
Ahhh já sei o q houve. Ver a máscara me ajudou! Na real a máscara está certa, mas eu defini a sprite pra escala de 50%, mas a a máscara não diminui junto.
Valeu demais, companheiro!

Eu vou pedir pro artista diminuir as sprites pela metade. Tem alguma função do GM que eu possa usar pra diminuir a sprite de fato e não só redesenhar ela menor?

Re: GM desconsiderando máscara e colidindo com sprite inteira

Enviado: Qua Jan 12, 2022 5:43 pm
por All-x
Mysterious Stranger escreveu: Qua Jan 12, 2022 5:37 pm Eu vou pedir pro artista diminuir as sprites pela metade. Tem alguma função do GM que eu possa usar pra diminuir a sprite de fato e não só redesenhar ela menor?
image_xscale e image_yscale. Ex: reduzir 50%:

Código: Selecionar todos

image_xscale = 0.5;
image_yscale = 0.5;

Re: GM desconsiderando máscara e colidindo com sprite inteira

Enviado: Qua Jan 12, 2022 6:55 pm
por Mysterious Stranger
All-x escreveu: Qua Jan 12, 2022 5:43 pm
Mysterious Stranger escreveu: Qua Jan 12, 2022 5:37 pm Eu vou pedir pro artista diminuir as sprites pela metade. Tem alguma função do GM que eu possa usar pra diminuir a sprite de fato e não só redesenhar ela menor?
image_xscale e image_yscale. Ex: reduzir 50%:

Código: Selecionar todos

image_xscale = 0.5;
image_yscale = 0.5;
Ok. Vou usar essas funções. Valeu de novo!