有人可以在GML中查看此代码中的错误吗?

时间:2016-04-12 21:12:45

标签: game-maker gml

var xpos = 0;
var ypos = 0; 
xpos = obj_magnet.x; 
ypos = obj_magnet.y;
if (xpos > 435 && xpos < 704 && ypos > 350 && ypos < 640)
{
    with(obj_lamp)
    {
        instance_change(obj_lamp_light, true);
    }
    if obj_lamp_light.image_index == 5
    {
        obj_lamp_light.image_speed = 0;
    }
    with(obj_arrow)
    {
        instance_change(obj_arrow_move_one_direction, true);
    }
    if obj_arrow_move_one_direction.image_index == 4
    {
        obj_arrow_move_one_direction.image_speed = 0;
    }
    with(obj_arrow_move_opposite_direction)
    {
        instance_change(obj_arrow, true);
    }
    exit;
}
else
{
    with(obj_lamp_light)
    {
        instance_change(obj_lamp, true);
    }
    with(obj_arrow_move_one_direction)
    {
        instance_change(obj_arrow_move_opposite_direction, true);
        if obj_arrow_move_opposite_direction.image_index == 4
        {
            obj_arrow_move_opposite_direction.image_speed = 0;
        }
    }
    exit;
}

这是一个我试图创建的游戏,其中obj_arrow_move_opposite_direction和obj_arrow_move_one_direction包含5个子图像,obj_lamp_light包含5个子图像。

1 个答案:

答案 0 :(得分:0)

你说每个对象包含5个子图像,对吗?看起来你正在第7行寻找不存在的子图像(5)。

这似乎是一个简单的拼写错误,但如果不是,重要的是要注意image_index从0开始。所以5个图像将是0-4而不是1-5。

var xpos=0;
var ypos=0; 
xpos=obj_magnet.x; 
ypos=obj_magnet.y;
if(xpos>435&&xpos<704&&ypos>350&&ypos<640) { with(obj_lamp){
instance_change(obj_lamp_light,true);} if
obj_lamp_light.image_index==5{ obj_lamp_light.image_speed=0;} // should be object_lamp_light.image_index == 4
with(obj_arrow){
instance_change(obj_arrow_move_one_direction,true);}
if obj_arrow_move_one_direction.image_index==4{
obj_arrow_move_one_direction.image_speed=0;}
with(obj_arrow_move_opposite_direction){
instance_change(obj_arrow,true);}
exit;
}
else{
with(obj_lamp_light){
instance_change(obj_lamp,true);}
with(obj_arrow_move_one_direction){
instance_change(obj_arrow_move_opposite_direction,true);
if obj_arrow_move_opposite_direction.image_index==4{
obj_arrow_move_opposite_direction.image_speed=0;}}
exit;
}

更好的是,如果您要检查以确保对象的image_indexs等于最后一个子图像,则可以使用image_number并减去1。这样,如果您添加更多子图像,则可以确保代码仍在检查最后一帧。