Página 1 de 1

Problemas com movimento diagonal

Enviado: Sex Jan 04, 2019 11:07 am
por AragaSam
Não sei o que esta havendo com meus códigos de movimentação que todos que fiz estão andando normalmente nas diagonais superior esquerda e inferior direita, mas que não funcionam com as diagonais inferior esquerda e superior direita
Depois desse problema busquei por códigos prontos aqui do fórum pois pensei que estava fazendo algo errado e aconteceu a mesma coisa com eles também, no momento estou usando o script desse tutorial:  https://tgmbrasil.com.br/viewtopic.php? ... a+s+d#p103
Vale lembrar que no próprio tutorial o autor mostra que para cancelar o movimento das diagonais é preciso declarar algumas variaveis da direção como falsas.
edit: não entendo muito de gml mas é possivel que tenha algo a ver com as direções que estão se cancelando terem valores positivos e negativos e se anularem?
Uso o GMS2

create:

// bussola
left=false
right=false
up=false
down=false
vel = 2

O código do step é o seguinte:

///////////
// ANDAR //
///////////

if keyboard_check(ord ("A")){left=true}
if keyboard_check(ord ("D¨")){right=true}
if keyboard_check(ord("W")){up=true}
if keyboard_check(ord ("S")){down=true}

if keyboard_check(ord ("A")) && left=true
{
repeat (vel)
   {
       if place_free(x-1,y){x-=1}
   }
sprite_index=spr_player_movendo_esquerda
}

if ! keyboard_check(ord ("A")) && left=true {
sprite_index = spr_player_parado_esquerda
left=false
}


if keyboard_check(ord ("D")) && right=true
{
repeat(vel)
   {
       if place_free(x+1,y){x+=1}
   }
sprite_index=spr_player_movendo_direita
}

if ! keyboard_check(ord ("D")) && right=true {
sprite_index=spr_player_parado_direita
right=false
}

if keyboard_check(ord ("W")) && up=true
{
repeat (vel)
   {
       if place_free(x,y-1){y-=1}
   }
sprite_index=spr_player_movendo_cima
}

if ! keyboard_check(ord ("W")) && up=true {
sprite_index = spr_player_parado_cima
up=false
}


if keyboard_check(ord ("S")) && down=true
{
repeat(vel)
   {
       if place_free(x,y+1){y+=1}
   }
sprite_index=spr_player_movendo_baixo
}

if ! keyboard_check(ord ("S")) && down=true {
sprite_index=spr_player_parado_baixo
down=false
}

Re: Problemas com movimento diagonal

Enviado: Sex Jan 04, 2019 12:11 pm
por None
Segue o link para meu curso

https://goo.gl/N7vWCz

Na seção de sistemas, as aulas de colisão top-down estão desbloqueadas e as de animação também.

Espero que ajude

Re: Problemas com movimento diagonal

Enviado: Dom Jan 06, 2019 1:01 pm
por AragaSam
Muito obrigado por disponibilizar os videos, consegui ver até o segundo vídeo de colisão
Ajudou muito

Re: Problemas com movimento diagonal

Enviado: Dom Jan 06, 2019 1:59 pm
por None
Se precisar de algum outro vídeo é só falar.

Aí eu libero ele, só tente me dar um período específico em que você vai ver