2016-10-16 3 views
-2

aus irgendeinem Grund, wenn ich das Spiel ausführen, ist das Sprite in seiner Sprunganimation und nicht im Leerlauf am Start, auch wenn Sie nach links und rechts bewegen das Sprite ist immer noch die Sprunganimation. Ich folgte einem Tutorial auf Youtube Ich weiß, dass die rechten und linken Animationen arbeiten jede Hilfe würde dankbar sein, danke.Wie mache ich Sprunganimation in Game Maker?

///platform "physics" 

var rkey = keyboard_check(vk_right); 
var lkey = keyboard_check(vk_left); 
var jkey = keyboard_check_pressed(vk_up); 

//Check for ground 
if (place_meeting(x, y+1, obj_solid)) 
{ 
airjump = 1; 
vspd = 0; 
//Jumping 
if (jkey) 
    { 
    vspd = -jspd; 
    } 
} 
else 
{ 
//Gravity 
if (vspd < 10) 
{ 
vspd += grav; 
}  
//Check For airjump 
if(airjump > 0) 
{ 
    if(jkey) 
    { 
    vspd = -jspd; 
    airjump -= 1;   
    } 
} 
} 

//Moving Right 
if(rkey) 
{ 
hspd = spd; 
//Left Wall-Jump 
if(place_meeting(x-1, y, obj_solid) && !place_meeting(x, y+1, obj_solid) 
&&    !lkey) 
{ 
    vspd = -jspd; 
} 
} 
//Moving Left 
if(lkey) 
{ 
hspd = -spd; 
//Right Wall-Jump 
if(place_meeting(x+1, y, obj_solid) && !place_meeting(x, y+1, obj_solid) 
&&  !rkey) 
{ 
    vspd = -jspd; 
} 
} 
//Check for not moving 
if((!rkey && !lkey) || (rkey & lkey)) 
{ 
hspd = 0 ; 
} 
//Horizontal Collisions 
if(place_meeting(x + hspd, y, obj_solid)) 
{ 
while(!place_meeting(x+sign(hspd), y,obj_solid)) 
{ 
    x += sign(hspd); 
} 
hspd = 0; 
} 

//Move Horizontally 
x += hspd; 

//Vertical Collisions 
if(place_meeting(x, y+vspd, obj_solid)) 
{ 
while(!place_meeting(x, y+sign(vspd),obj_solid)) 
{ 
    y += sign(vspd); 
} 
vspd = 0; 
} 

//Move Vertically 
y += vspd; 

//Control The Sprites 
if(vspd != 0) 
{ 
sprite_index = spr_player_jump; 
image_speed = 1; 
//use the next line if you have a falling animation as well but the 
falling   animation should be the second one 
//image_index = y>yprevious; 
} 

else 
{ 

if(hspd != 0) 
{ 
    sprite_index = spr_player_walk; 
    image_speed = .15; 
} 
else if(hspd = 0) 
{ 
    sprite_index = spr_player_stand; 
} 
} 
if (!place_meeting(x,y+1, obj_solid)) 
{ 
sprite_index=spr_player_jump; 
} 

//Control the direction that the player is facing 
if(hspd > 0) 
{ 
image_xscale = 1;  
} 
else if (hspd < 0) 
{ 
image_xscale = -1; 
} 

Antwort

0

Zuerst wird in der Veranstaltung erstellen, legen image_speed = 0; Dann müssen Sie einmal die Animation spielen.

Dann, wenn Sie in Schritt Ereignis sind, wenn der Spieler springt:

`while (image_index != image_number) 
{ 
    image_index++; 
} 
//Or you can replace image_number with the end 
//value of your jump animation, if you also have other animations like 
//walking then set image index to the start value before running the loop` 

Auch eine Überprüfung, um sicherzustellen, dass die Spieler auf dem Boden zu ist (so Drücken der Leertaste in der Luft doesn Lass die Animation nicht spielen. Außer du willst das.

Verwandte Themen