Página 1 de 1

Animações não funcionam em rampas

Enviado: Dom Abr 14, 2019 11:31 pm
por 186557
Eu fiz um codigo bem simples para rampas :

Código: Selecionar todos

if distance_to_object(obj_rampa)<=1 && key_left {x-=2;y-=4}
if distance_to_object(obj_rampa2)<=1 && key_right {x+=2;y-=4}
Mas as animações do player não funcionam. No caso o codigo das animações é esse onde tem um codigo para cada lado;

Código: Selecionar todos

if lado == 0 
{
if xspeed > 0 && ataque = 0 
{
sprite_index = spr_player_anda_d;
image_speed = 0.3;
}
if xspeed == 0 && ataque = 0
{
sprite_index = spr_player_parado_d;
}
if !place_meeting(x,y+1,obj_wall)
{
if yspeed < 0 && ataque = 0 
{
sprite_index = spr_player_pulo_d;
image_speed = 1;
}
if yspeed > 0 && ataque = 0
{
sprite_index = spr_player_pulo_d;
image_speed = 1;
}
if yspeed == 0 && ataque = 0
{
sprite_index = spr_player_pulo_d;
image_speed = 1;
}
}
if ataque = 1 {
sprite_index = spr_player_ataque_d;
image_speed = 0.7;
if (image_index>=3 && image_index<4)
{
ataque=0;
}
}
}

//Left Animation
if lado == 1 
{
if xspeed < 0 && ataque = 0 
{
sprite_index = spr_player_anda_e;
image_speed = 0.3;
}

if xspeed == 0 && ataque = 0 
{
sprite_index = spr_player_parado_e;
}
if !place_meeting(x,y+1,obj_wall)
{
if yspeed < 0 && ataque = 0
{
sprite_index = spr_player_pulo_e;
image_speed = 1;
}
if yspeed == 0 && ataque = 0
{
sprite_index = spr_player_pulo_e;
image_speed = 1;
}
if yspeed > 0 && ataque = 0
{
sprite_index = spr_player_pulo_e;
image_speed = 1;
}
}
if ataque = 2 {
sprite_index = spr_player_ataque_e;
image_speed = 0.7;
if (image_index>=3 && image_index<4)
{
ataque=0;
}
}
}
Eu tentei colocar yspeed<=0 no codigo da rampa e if !place_meeting(x,y+2,obj_wall) no codigo da animação para ver se resolvia, mas não teve resultado. Como posso resolver isso?

Re: Animações não funcionam em rampas

Enviado: Seg Abr 15, 2019 2:09 pm
por None
Seu problema é que você está lidando com as animações usando xspeed e yspeed, mas quando você interage com as rampas o X e y são afetados diretamente.

Aí você decide se vai mudar o código das rampas ou da animação.

Re: Animações não funcionam em rampas

Enviado: Seg Abr 15, 2019 9:38 pm
por Foxy Of Jungle
Dá uma melhorada no visual do seu código, fica complicado até para você entender o que está fazendo, sugiro colocar espaços depois dos { }, exemplo:

Código: Selecionar todos

if xspeed > 0 && ataque = 0 
{
    sprite_index = spr_player_anda_d;
    image_speed = 0.3;
}

Re: Animações não funcionam em rampas

Enviado: Seg Abr 15, 2019 11:46 pm
por 186557
Certo. Eu estava dando uma olhada em alguns codigos para rampa e encontrei um que tem bem menos bugs na movimentação do que este que estou usando. Vale a pena usar ele? Nesse caso terei que alterar o codigo das animações já que inicialmente nenhuma esta funcionando corretamente com esse codigo.

Código: Selecionar todos

key_right = keyboard_check(vk_right)
key_left = keyboard_check(vk_left)
key_down = keyboard_check(vk_down)
key_jump = keyboard_check_pressed(ord("Z"))

gravity = "yspeed+=1"
margem = 8;
velocidade = 1; 
pulo = "yspeed = - 10;" 


cima = keyboard_check(vk_up);

if (yspeed >= 0 && !place_free(x,y + yspeed + 1)) 
  {
  move_contact_solid(270,vspeed + 1);
  yspeed = 0;
  gravity = 0;
  }
  
if key_left && (!key_jump) 
  {
  for (i = 0; i<= margem; i += 1;)
    {
    if place_free(x-velocidade,y-i)
      {
      x-= velocidade; y-= i; exit; 
      }
    }
  }
else
  {
  if place_free(x-velocidade,y + yspeed + gravity) && key_left 
    {
    x = x-velocidade;
    }
  }
if key_right && (!key_jump) 
  {
  for (i = 0; i<= margem; i += 1;)
    {
    if place_free(x + velocidade,y-i)
      {
      x += velocidade; y-= i; exit;
      }
    }
  }
else
  {
  if place_free(x + velocidade,y + yspeed + gravity) && key_right 
    {
    x = x + velocidade;
    }
  }

if key_jump && !place_free(x,y + 1) yspeed = -pulo;

if (!place_free(x,y-sprite_yoffset + yspeed)) 
  {
  yspeed = gravity;
  }
if (!place_free(x,y)) && place_free(x,y-1) 
  {
  y = y-1;
  yspeed = 0;
  }


Re: Animações não funcionam em rampas

Enviado: Ter Abr 16, 2019 12:07 am
por None
Eu não gostei muito desse código, mas se funcionou para você está ótimo!