Problemas com movimento diagonal
Enviado: Sex Jan 04, 2019 11:07 am
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
}
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
}