gamemaker吧 关注:13,566贴子:94,156
  • 4回复贴,共1

我的千古之谜请大佬看看

只看楼主收藏回复

我的千古之谜请大佬看看


IP属地:上海来自iPhone客户端1楼2020-06-05 23:13回复
    本人诚心求教


    IP属地:上海来自iPhone客户端2楼2020-06-05 23:17
    回复
      建议看一下官方新手教程了解一下什么是变量,什么是字符串。以及看一下keyboard_check_pressed和keyboard_key_press以及instance_create_layer的F1帮助。很明显你是没有跟着做过任何教程就企图上来直接写代码。
      三个问题:
      1. 你把keyboard_key_press放在if里,我姑且认为你是想判断按下Z键。但是,返回按键是否按下的函数是keyboard_check_pressed而不是keyboard_key_press。后者是执行一个模拟按下Z键的动作。
      因此,我后面都以你实际想用的是keyboard_check_pressed函数来说。
      --------
      2. keyboard_check_pressed函数的参数应当是一个按键的数字ID。此处你填了一个Z。Z是什么?你是想判定Z键,但对于编译器来说,你填Z的意思是指一个名叫Z的变量。但你并没有声明一个名叫Z的变量,因此运行的时候报错告诉你没有名叫Z的变量。
      你应当提供给该函数的参数是一个数字:比如3,比如45;或者一个已经赋值的数字变量:比如一个已经赋值为12(写法比如Z=12)的名为Z的变量。这些是说为什么你不应该直接在括号里填一个Z。
      现在你知道你需要按键Z的数字ID,但是此处你并不知道数字ID是多少,因此你还需要用到ord函数。(相关说明建议也看下F1帮助)ord函数接受一个字符串作为参数,它会把字符串里的字母转换成对应按键的数字ID。所以你应该把整个ord函数填入keyboard_check_pressed函数的括号内。即使用ord函数的返回值作为keyboard_...函数的参数。
      --------
      3. instance_create_layer函数的第二个参数应当输入一个layer的数字id或者字符串名称,而你和之前一样只填了个instances_1,它会被识别为一个变量名称。因此你需要为它加上双引号,它应该是一个字符串类型的layer名称。(顺便注意大小写)
      --------
      综上所述,你的第6行应当写成:
      if(keyboard_check_pressed(ord("Z"))) instance_create_layer(x,y,"Instances_1",obj_bullet);


      IP属地:上海来自Android客户端3楼2020-06-06 00:09
      收起回复