Página 1 de 1
mascara de sprite estática
Enviado: Qua Fev 19, 2020 8:54 pm
por VICTORPEREIRADOSSANTOS
seguinte pessoal, estou trabalhando em um jogo de visão isométrica de tiro, e estou com uma dúvida. O obj_player possui uma sprite de imagem isométrica do qual tem seu angulo e direção apontados para onde o mouse está na tela, por esse motivo o sprite do personagem constantemente está agarrando nas paredes. Como solução, eu pensei que se fosse possível fazer com que a mask do obj fosse estática, o obj pararia de se prender as paredes, porém não tenho ideia de como fazer isso. Se alguém puder me ajudar ou até sugerir outra solução ficarei agradecido
Re: mascara de sprite estática
Enviado: Sex Fev 21, 2020 12:28 am
por Chuaschinai
Ele agarra nas paredes por conta da mudança de uma sprite para outra com mascara de tamanho diferente, se todas tiverem o mesmo tamanho isso não deve acontecer, ou somente cria uma sprite com um formato determinado, e no objeto selecione a Mask logo a baixo da sprite.
Re: mascara de sprite estática
Enviado: Sex Fev 21, 2020 3:06 am
por VICTORPEREIRADOSSANTOS
você não entendeu, o motivo do sprite agarrar, é porque ele gira. Basicamente, ele é um quadrado, porém acaba virando um "losângulo" conforme eu gire o mouse para um ponto da tela. Se fosse possível deixar ele como um quadrado estático, o problema com a colisão não aconteceria (pois eu fiz o teste com o sprite sem ele se mexer e nada aconteceu) então estou procurando maneiras de fazer com que a mascara do personagem seja estatica para esse problema da colisão não voltar a acontecer. Obviamente esse foi o meio que eu pensei, ou seja, tenho 100% de certeza que o meio é outro xD
Re: mascara de sprite estática
Enviado: Sex Fev 21, 2020 12:34 pm
por Chuaschinai
Então você deve criar um sprite separada como eu disse, e definir na mascara do objeto.
Re: mascara de sprite estática
Enviado: Sex Fev 21, 2020 11:01 pm
por NPH
caso você esteje utilizando o GML, sugiro não utilizar o "IMAGE_ANGLE", pois essa função também rotaciona A MASK, eu sugiro que use uma variável própria sua tipo "direcao" ou usar o próprio DIRECTION, e desenhe o SPRITE no DRAW EVENT.
Apanhei bastante na época do GM6 tentando fazer joguinhos ISOMÉTRICOS.
Qualquer dúvida tamos aí quando der o/
Re: mascara de sprite estática
Enviado: Seg Mar 02, 2020 8:01 pm
por VICTORPEREIRADOSSANTOS
Entendi. Era exatamente a resposta que eu esperava. Porém, o problema é que eu não faço ideia de como fazer isso xD
e sim, eu estou usando o image_angle e isso ta fodendo as minhas colisões. Preciso IMEDIATAMENTE resolver isso. Valeu aí pela ajuda meu bom :)
Re: mascara de sprite estática
Enviado: Qua Mar 11, 2020 8:50 pm
por VICTORPEREIRADOSSANTOS
NPH escreveu:caso você esteje utilizando o GML, sugiro não utilizar o "IMAGE_ANGLE", pois essa função também rotaciona A MASK, eu sugiro que use uma variável própria sua tipo "direcao" ou usar o próprio DIRECTION, e desenhe o SPRITE no DRAW EVENT.
Apanhei bastante na época do GM6 tentando fazer joguinhos ISOMÉTRICOS.
Qualquer dúvida tamos aí quando der o/
Então, já faz alguns dias desde a sua resposta e eu acho que sou meio mongol o bastante pra não ter conseguido aplicar no meu jogo. Estou desenhando o sprite pelo "Draw", porém não consigo mais mudar o angulo da imagem. Poderia me dar um exemplo de como ficaria? No caso estou usando o código padrão pra fazer com que o sprite do player fique na direção do mouse, o famoso "image_angle=direction". Estou realmente perdido e se puder me ajudar ficaria agradecido xD
Re: mascara de sprite estática
Enviado: Qui Mar 12, 2020 9:44 am
por NPH
opa victor, blz! eu não respondi antes porque eu arrumei um emprego novo, não to tendo tempo de mexer no meu pc, só nos dias de folga (segundas-feiras) que ligo, mas enfim, você pode fazer no draw:
draw_sprite_ext(sprite_index,image_index,x,y,1,1,direction,-1,1);
onde:
sprite_index irá pegar a sprite atual;
image_index irá pegar a "sub imagem" doi sprite atual
as posições x e y logo em seguida
o 1,1 antes do direction é o xscale e o yscale do sprite
direction vai rotacionar apenas o sprite pelo draw e não pelo objeto, assim não rotacionando a mask
-1 deixe assim mesmo
e o último é o alpha, menor que 1 ele vai começar a ficar transparente.
daí no código que fica no step event (eu suponho que vc esteja usando no step :P) que faz ele apontar pro mouse é só usar:
direction=point_direction(x,y,mouse_x,mouse_y);
e pimba! não irá mais rotacionar a máscara junto com o sprite.
Flws e me perdoe por não ter respondido antes, é por causa do novo emprego!