Página 1 de 1
Angulação do sprite ao criar objeto
Enviado: Sex Dez 11, 2020 5:02 pm
por dvictorps
E aí pessoal, suave? então, eu tenho meu objeto player com o spr_arma sendo desenhado no centro dele. Esse sprite fica girando e troca de YScale dependendo da posiçao do mouse da tela, igual a esse gif:
http://g.recordit.co/4JT6fU8J0o.gif
até aí tudo certo. A questão, e que quando eu crio o obj_bullet, ele vai no centro exato do meu objeto, ficando desse jeito:
http://g.recordit.co/thyPItID37.gif
no obj_bullet, eu puxo a posiçao do mouse na tela e angulo o spr_bullet pra ficar igual
existe uma maneira de eu sincronizar a direçao da sprite do obj_bullet baseando na posiçao do spr_arma? No caso eu só queria que a bala saísse exatamente do centro do cano da arma kk
Re: Angulação do sprite ao criar objeto
Enviado: Sex Dez 11, 2020 6:31 pm
por Chuaschinai
Mude o ponto de origem da sprite, para ficar na altura do cano no eixo Y, e na metade da sprite no eixo X, assim:
Ai você pode usar o lengthdir_x/y para posicionar o ponto da onde quer que saia a bala:
Step:
Código: Selecionar todos
// Posição do cano automática com base na largura da sprite
var _x = x + lengthdir_x(sprite_width/2, image_angle);
var _y = y + lengthdir_y(sprite_width/2, image_angle);
// Basta usar o _x e _y na criação da bala
if(mouse_check_button_pressed(mb_left)) {
instance_create(_x, _y, obj_bullet);
}
Na documentação do gamemaker você pode ver como funciona o
lengthdir.
Veja se funciona.
Re: Angulação do sprite ao criar objeto
Enviado: Sex Dez 11, 2020 8:52 pm
por dvictorps
por alguma razão, mesmo após definir o _x e o _y o GMS não está reconhecendo (uso versão 1.4.17). vou fazer mais alguns testes aqui pra ver se funciona
Re: Angulação do sprite ao criar objeto
Enviado: Sex Dez 11, 2020 8:57 pm
por dvictorps
Re: Angulação do sprite ao criar objeto
Enviado: Sex Dez 11, 2020 9:35 pm
por Chuaschinai
Vou te mandar um projeto que fiz aqui rapidinho, testa ai, coloquei os pontos na arma para você poder ver, usei a versão 1.4.9999, mas creio que você consiga abrir, de qualquer maneira vou deixar o código aqui:
Exemplo
Código: Clique para ver o conteúdo
Draw:
Código: Selecionar todos
image_angle = point_direction(x, y, mouse_x, mouse_y);
// Sprite inverte de lado
if(mouse_x < x) {
image_yscale = -1;
}else {
image_yscale = 1;
}
// Desenha a arma
draw_self();
// NÃO É NECESSARIO: Ponto so para ver onde esta a saida da bala
draw_sprite(spr_bullet, 0, x, y);
// Aqui é a posição da onde a bala sai
var _x = x + lengthdir_x(sprite_width / 2, image_angle);
var _y = y + lengthdir_y(sprite_width / 2, image_angle);
// NÃO É NECESSARIO: Ponto so para ver onde esta a saida da bala
draw_sprite(spr_bullet, 0, _x, _y);
// Cria a bala
if(mouse_check_button_pressed(mb_left)) {
var _bullet = instance_create(_x, _y, obj_bullet);
_bullet.direction = image_angle;
}