与另一个对象碰撞时,引用的变量是未定义的,即使它已定义? (GMS1.4)
When colliding with another object, the variable referenced is undefined, even though it is defined? (GMS1.4)
我正在使用 GameMaker Studio 1.4。我有一个火球物体,当它与敌人物体碰撞时,它应该从敌人的生命变量中移除 1(一)。
代码如下:
火球代码
步骤事件
if (place_meeting(x,y,obj_enemy)) { // if collision with enemy
with (other) {
other.life-=1; // remove 1 from life
self.start_decay=true; // remove fireball
}
}
敌人代码
创建
life=1;
isDie=false;
步骤事件
if (life<=0) {
isDie=true; // I use a variable because there are other conditions that can also satisfy this
}
[...] // other unnecessary code
if (isDie) {
instance_destroy(); // Destroy self
}
错误日志
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object obj_fireball:
Variable <unknown_object>.<unknown variable>(100017, -2147483648) not set before reading it.
at gml_Object_obj_fireball_StepNormalEvent_1 (line 3) - other.life-=1;
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_obj_fireball_StepNormalEvent_1 (line 3) ('other.life-=1;')
我注意到的一件事是您在 with(other)
中使用了 other
,这听起来有点不必要。
假设 other.life -= 1
表示敌人,self.start_decay=true
表示火球,那么您可以删除 with(other)
行(和括号),保留代码像这样:
if (place_meeting(x,y,obj_enemy)) { // if collision with enemy
other.life-=1; // remove 1 from life
self.start_decay=true; // remove fireball
}
如果您使用 with(other)
,那么 with(other)
中的所有内容都将指向与之碰撞的 'other' 对象,在这种情况下,您的 obj_enemy
。
在 with(other)
中调用 other
可能会返回到火球,它没有定义 life
变量。这就是您的错误来源。
我正在使用 GameMaker Studio 1.4。我有一个火球物体,当它与敌人物体碰撞时,它应该从敌人的生命变量中移除 1(一)。
代码如下:
火球代码
步骤事件
if (place_meeting(x,y,obj_enemy)) { // if collision with enemy
with (other) {
other.life-=1; // remove 1 from life
self.start_decay=true; // remove fireball
}
}
敌人代码
创建
life=1;
isDie=false;
步骤事件
if (life<=0) {
isDie=true; // I use a variable because there are other conditions that can also satisfy this
}
[...] // other unnecessary code
if (isDie) {
instance_destroy(); // Destroy self
}
错误日志
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object obj_fireball:
Variable <unknown_object>.<unknown variable>(100017, -2147483648) not set before reading it.
at gml_Object_obj_fireball_StepNormalEvent_1 (line 3) - other.life-=1;
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_obj_fireball_StepNormalEvent_1 (line 3) ('other.life-=1;')
我注意到的一件事是您在 with(other)
中使用了 other
,这听起来有点不必要。
假设 other.life -= 1
表示敌人,self.start_decay=true
表示火球,那么您可以删除 with(other)
行(和括号),保留代码像这样:
if (place_meeting(x,y,obj_enemy)) { // if collision with enemy
other.life-=1; // remove 1 from life
self.start_decay=true; // remove fireball
}
如果您使用 with(other)
,那么 with(other)
中的所有内容都将指向与之碰撞的 'other' 对象,在这种情况下,您的 obj_enemy
。
在 with(other)
中调用 other
可能会返回到火球,它没有定义 life
变量。这就是您的错误来源。