2015-07-19 79 views
2

好吧,我有我的精灵面临方向的问题,我有,所以: 如果我按D键,精灵将播放步行精灵,当我释放它时,它面临的方向我是但是当我停下来,它立即看起来另一个方向,所以继承我的代码(PS我有一个精灵,不走路,并且走路,然后当我走左(一个关键)面向另一方向(player_other_direction)):GML精灵方向面临问题?

///Platformer Physics 

var rkey = keyboard_check(ord("D")); 
var lkey = keyboard_check(ord("A")); 
var jkey = keyboard_check(ord("W")); 

//Check for the ground 
if(place_meeting(x, y+1, obj_platform)) 
{ 
    vspd = 0; 

    //Jumping 
    if(jkey) 
    { 
     vspd = -jspd; 
    } 
} 
else 
{ 
    //Move down with gravity 
    if (vspd < 10) 
    { 
     vspd += grav; 
    } 
    if(keyboard_check_released(ord("W")) && vspd <-4){ 
     vspd = -4; 
    } 
} 

//Moving to the right 
if(rkey) 
{ 
    sprite_index = player_walking_right; 
    if(hspd < spd){ 
     hspd += fric; 
    } else{ 
    hspd = spd; 
    } 
} 

//Moving to the left 
if(lkey) 
{ 
    sprite_index = player_walking_left; 
    if(hspd > -spd){ 
     hspd -= fric; 
    } else { 
     hspd = -spd; 
    } 
} 

//Check for not moving 
if((!rkey and !lkey) || (rkey && lkey)) 
{ 
    sprite_index = player; 
    if(hspd != 0){ 
     if(hspd<0){ 
      hspd += fric; 
     } else { 
      hspd -= fric; 
     } 
    } 
} 


//Horizontal Collisions 

if(place_meeting(x+hspd, y, obj_platform)) 
{ 
    while(!place_meeting(x+sign(hspd), y, obj_platform)){ 
     x+= sign(hspd); 
     } 
     hspd = 0; 
} 

//Move Horizontally 
x += hspd; 


//Vertical Collisions 

if(place_meeting(x, y+vspd, obj_platform)) 
{ 
    while(!place_meeting(x, y+sign(vspd), obj_platform)){ 
     y+= sign(vspd); 
     } 
     vspd = 0; 
} 

//Move Vertically 
y += vspd; 

PS。我已经定义了变量,但是它们在另一个脚本中

回答

3
//Check for not moving 
if((!rkey and !lkey) || (rkey && lkey)) 
{ 
    sprite_index = player; 
    if(hspd != 0){ 
     if(hspd<0){ 
      hspd += fric; 
     } else { 
      hspd -= fric; 
     } 
    } 
} 

在这里,您检查玩家是否正在移动;如果没有,则将其sprite_index设置为“player”。我的猜测是,“球员”面向右侧,所以当你停止移动时,无论你走哪条路,都会面对右侧。

您需要设法检查您最后一次移动的方向,如果它位于左侧,请将sprite_index设置为“player_other_direction”而不是“player”(因为您提到您已经有了“ player_other_direction“精灵准备好使用)。