【问题标题】:Can someone see what's wrong in this code in GML?有人可以在 GML 中看到这段代码有什么问题吗?
【发布时间】:2016-04-12 21:12:45
【问题描述】:
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 个子图像。

【问题讨论】:

  • 究竟是什么不起作用?你有任何错误吗?你没有得到预期的结果吗?

标签: game-maker gml


【解决方案1】:

您说每个对象包含 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_indexes 等于最后一个子图像,您可以使用 image_number 并减一。这样,如果您添加更多子图像,您可以确保您的代码仍在检查最后一帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 2020-10-30
    • 2010-11-08
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多