尝试比较两个坐标以获得结果时出错

时间:2015-05-05 19:33:03

标签: game-maker gml

我正在为我的比赛制作一个得分计数器。当两个物体的x坐标'满足分数增加时。我写了一个小脚本并从我的经理对象中执行它。然后从我的脚本发生错误,错误响应对我来说是荒谬的。

剧本:

if (obj_char.x == obj_ball.x)
{
    obj_manager.myScore += 1;
}

错误是这样的:

############################################################################################
FATAL ERROR in
action number 1
of  Step Event0
for object obj_manager:

Push :: Execution Error - Variable Get 0.x(0, -2147483648)
 at gml_Script_scr_score (line 1) - if (obj_char.x == obj_ball.x)
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_scr_score (line 1)
called from - gml_Object_obj_manager_StepNormalEvent_1 (line 9) - scr_score();

2 个答案:

答案 0 :(得分:0)

使用它来确保两个实例都存在:

if(instance_exists(obj_char) && instance_exists(obj_ball) && instance_exists(obj_manager)){
  if(obj_ball.x == obj_char.x) obj_manager.myScore += 1;
};

当然,如果你有多个obj_char实例,你需要跟踪它们。您可以使用用于设置房间的任何代码来执行此操作。例如:

player = instance_create(64, 64, obj_char);
enemy = instance_create(240, 64, obj_char);

现在,您可以将玩家或敌人置于obj_char所在的相同位置。像这样:

if(instance_exists(player) && instance_exists(obj_ball) && instance_exists(obj_manager)){
  if(obj_ball.x == player.x) obj_manager.myScore += 1;
};

if(instance_exists(enemy) && instance_exists(obj_ball) && instance_exists(obj_manager)){
  if(obj_ball.x == enemy.x) obj_manager.theirScore += 1;
};

希望有所帮助。如果您有任何问题,请告诉我。

答案 1 :(得分:0)

运行代码时,obj_char或obj_ball不存在。 尝试:

ms

现在你可以拥有0或者更多的obj_char和0或更多的obj_ball,只要其中两个人相遇,分数就会增加。