Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

GML: como posso alterar a mascara de colisão?

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

GML: como posso alterar a mascara de colisão?

Mensagem por Cambalinho » Sex Nov 17, 2017 4:32 pm

se a propriedade do objecto bbox_bottom(por exemplo) é só de leitura, como posso alterar os dados?
o objectivo é poder controlar a colisão 1 pouco antes de tocar na parede, sem usar o evento Step.

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: GML: como posso alterar a mascara de colisão?

Mensagem por Cambalinho » Sáb Nov 25, 2017 1:10 pm

após varias tentativas eu consegui fazer o script. o Manual não é bem explicito sobre as funções de edição do rectangulo de colisão :(
existe outra forma, mas não consigo utilizar a função sprite_collision_mask() :(

Código: Selecionar todos

///SetCollisionMask(Sprite, Width, Height, Distance);

//getting the mask size:
Width=argument1;
Height=argument2;
distance=argument3;

//copy the sprite to the variable:
sprite=sprite_duplicate(argument0);

//change the object sprite:
self.sprite_index=sprite;
self.image_xscale=(Width+distance*2)/self.sprite_width;
self.image_yscale=(Height+distance*2)/self.sprite_height;
//change the collision rectangle mask:
//what i just did was just change the Origin(X,Y) of the sprite
sprite_set_offset(self.sprite_index,
    sprite_get_xoffset(self.sprite_index)+distance/self.image_xscale,
    sprite_get_yoffset(self.sprite_index)+distance/self.image_yscale);
- eu aconselho usar esta função no evento Create;
- o evento Collision será executado normalmente, mas com a pequena diferença do script(imagina o distance ser 5. se o jogador estiver a 5 pixels da parede, o evento Collision será executado).
o problema aqui, sem essa ajuda do Manual, foi que tive de converter os valores para a escala da imagem. foram muitas tentativas e tiros no escuro por não ter esta informação :(
"This function can be used to set the x and y origin of a sprite, and takes relative values based on the (0,0) position being the upper left corner of the sprite. "
mas fiquei a saber o mesmo :(
mas se alguém me souber explicar, por favor o faça.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes