0

在 GameMaker 中制作游戏时,我遇到了未设置变量的问题,我不知道为什么。当按下 W、A、S 或 D 并单击 LMB 时,它可以工作,但如果我按下 W、A、S 或 D 然后松开然后单击 LMB,则会崩溃。

代码:

var look
var bullet
if (keyboard_check(ord("A"))){
     x = x - 5;
    sprite_index = spr_west_hiro
    image_xscale = 3
    image_yscale = 3
    look = 180

} else if (keyboard_check(ord("D"))){
    x = x + 5;
    sprite_index = spr_east_hiro
    image_xscale = 3
    image_yscale = 3
    look = 0

} else if (keyboard_check(ord("S"))){
    y = y + 5;
    sprite_index = spr_south_hiro
    image_xscale = 3
    image_yscale = 3
    look = 270

} else if (keyboard_check(ord("W"))){
    y = y - 5;
    sprite_index = spr_north_hiro
    image_xscale = 3
    image_yscale = 3
    look = 90

}
//------------------------------------------------------------------------------
if (keyboard_check_released(ord("A"))){
    sprite_index = spr_idlewest_hiro
    image_xscale = 3
    image_yscale = 3
    look = 180

} else if (keyboard_check_released(ord("D"))){
    sprite_index = spr_idleast_hiro
    image_xscale = 3
    image_yscale = 3
    look = 0

} else if (keyboard_check_released(ord("S"))){
    sprite_index = spr_idlesouth_hiro
    image_xscale = 3
    image_yscale = 3
    look = 270

} else if (keyboard_check_released(ord("W"))){
    sprite_index = spr_idlenorth_hiro
    image_xscale = 3
    image_yscale = 3
    look = 90

}
//--------------------------------------------------------------------------------
if (mouse_check_button_pressed(mb_left)){
    var bullet = instance_create_layer(x,y, "Instances", obj_bullet)
    bullet.direction = look
}

错误:

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


local variable look(100001, -2147483648) not set before reading it.
 at gml_Object_obj_hiro_Step_0 (line 61) -  bullet.direction = look
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_obj_hiro_Step_0 (line 61)

我已经多次查看代码,但我仍然很难过。特别是因为看起来变量似乎没有保存设置给它的系数,尽管事实上它应该在 W、A、S 或 D 被按下然后释放时保存。

4

1 回答 1

0

首先,您需要为look变量分配一个值,否则如果没有按下任何按钮,它将不会被设置为任何值。

其次,您可能希望在创建事件中这样做,因为您可能希望您的角色朝最后按下的方向射击,而不仅仅是“某处”

于 2019-03-20T09:46:38.060 回答