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.
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?
- Cambalinho
- Membro
- Reações: 0
- Mensagens: 59
- Cambalinho
- Membro
- Reações: 0
- Mensagens: 59
Re: GML: como posso alterar a mascara de colisão?
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() :(
- 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.
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);
- 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.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante