Avatar do usuário
186557
Membro
Membro
Autor
Mensagens: 28
Registrado em: Ter Nov 27, 2018 11:34 pm
Karma: 45

Animações não funcionam em rampas

Dom Abr 14, 2019 11:31 pm

Eu fiz um codigo bem simples para rampas :

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;

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?
1

Tags:
 
Avatar do usuário
None
Administrador
Administrador
Mensagens: 268
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 649

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

Seg Abr 15, 2019 2:09 pm

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.
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
Foxy Of Jungle
Game Designer
Game Designer
Mensagens: 152
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 287
Contato:

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

Seg Abr 15, 2019 9:38 pm

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:
if xspeed > 0 && ataque = 0 
{
    sprite_index = spr_player_anda_d;
    image_speed = 0.3;
}
1
 
Avatar do usuário
186557
Membro
Membro
Autor
Mensagens: 28
Registrado em: Ter Nov 27, 2018 11:34 pm
Karma: 45

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

Seg Abr 15, 2019 11:46 pm

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.

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;
  }

 
Avatar do usuário
None
Administrador
Administrador
Mensagens: 268
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 649

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

Ter Abr 16, 2019 12:07 am

Eu não gostei muito desse código, mas se funcionou para você está ótimo!
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes