Переменная проблема в GameMaker 2 - PullRequest
0 голосов
/ 16 марта 2019

Создание игры в GameMaker, и у меня возникла проблема, когда переменная не установлена, и я не знаю почему.При нажатии на W, A, S или D и нажатии ЛКМ он работает, но падает, если я нажимаю на W, A, S или D, затем отпускаю и затем нажимаю ЛКМ.

Код:

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 нажимаются, а затем освобождаются.

1 Ответ

0 голосов
/ 20 марта 2019

Во-первых, вы захотите присвоить значение вашей переменной look, так как в противном случае оно не будет установлено на что-либо, если ни одна из кнопок не была нажата.

Во-вторых, вы можете сделать это вСоздайте событие, так как вы, вероятно, хотите, чтобы ваш персонаж стрелял в последнем нажатом направлении, а не просто «где-то»

...