2016-10-16 9 views
-2

何かの理由で私はゲームを実行するスプライトがジャンプアニメーションではなく、スプライトがまだジャンプアニメーションである場合、左右に移動しても開始時にアイドルではありません。私はYouTubeのチュートリアルに従っています。右と左のアニメーションが助けてくれてありがとうと感謝しています。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; 
} 

答えて

0

最初に、作成イベントでimage_speed = 0;を設定します。次に、アニメーションを1回再生する必要があります。手順イベントにしていたら、その後

、プレイヤーがジャンプ:また

`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` 

、チェックのでdoesnの空気中にスペースバーを押すと(プレイヤーが地面に余りにあることを確認しますあなたが望んでいない限り、アニメーションを再生させないでください)

関連する問題