GML精灵方向面临问题?
问题描述:
好吧,我有我的精灵面临方向的问题,我有,所以: 如果我按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。我已经定义了变量,但是它们在另一个脚本中
答
//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“精灵准备好使用)。