Página 1 de 1

Dúvida com código

Enviado: Seg Jan 09, 2017 7:38 pm
por dkoelho
Opa, e aí galera, beleza? Eu comecei a mexer com o GM:S e estou desenvolvendo um projeto para entender como funciona mais ou menos. Eu comecei fazendo as coisas através dos eventos para eu ver como funciona, e agora estou partindo pra programação.
Meu problema é o seguinte, eu quero que quando eu aperte alguma das setas do teclado, uma faca seja atirada pelo herói na direção correspondente da seta. Eu montei uma variável no herói onde cada valor indica uma direção quando alguma tecla for pressionada:

Código: Selecionar todos

if keyboard_check(vk_left){
    direction = 0;
    instance_create(x, y, obj_knife)
}
if keyboard_check(vk_right){
    direction = 1;
    instance_create(x, y, obj_knife)
}
Já no objeto da faca, eu coloquei num create o seguinte:

Código: Selecionar todos

if (obj_player.direction = 1){
    move_towards_point(+10, y, 10);
}
if (obj_player.direction = 0){
    move_towards_point(-10, y, 10);
}
Por algum motivo que eu não sei decifrar, a faca sempre é atirada pra esquerda. Eu sei que a variável da direção começa em 0 (que é esquerda), mas ela deveria estar mudando quando eu aperto a seta direita. Onde eu errei? dhawiudjauiwfjiwajfoaw

Re: Dúvida com código

Enviado: Seg Jan 09, 2017 7:52 pm
por Rodrigo Santiago
Primeiramente, direction é uma variavel 'built-in', ou seja, assim como x e y ele ja vem com o objeto e faz algumas coisas especificas. Se você usar direction e speed juntos, você pode mover o objeto para uma direção a uma determinada velocidade. direction deve variar de 0 - 360.

Pois bem,  move_towards_point ser justamente pra mudar essas duas variáveis ! Por isso que vc está tendo esses erros ! Tenta criar outra variavel com outro nome, por exemplo

//create

Código: Selecionar todos

lado = -1;
Então você substitui 'direction' pela nova variavel 'lado'. e no mais, na funcao move_towards_point você implementou estranhamente sem colocar o x !
Veja como deve ficar :

Código: Selecionar todos

move_towards_point( x - 10, y, 10);

Re: Dúvida com código

Enviado: Seg Jan 09, 2017 8:56 pm
por dkoelho
muito obrigado, cara! eu estava conversando com um colega (que já é bem experiente) e ele me explicou isso das variáveis built-in, eu estava meio desligado disso. tô dando mais uma estudada aqui da parte teórica.
de qualquer jeito, muito obrigado! resolveu meu problema :)