gmstudio吧 关注:952贴子:3,563
  • 11回复贴,共1

【射击游戏_GML】飞机射出子弹的问题,请帮忙

只看楼主收藏回复

我在看教程学习shoot em up的例子,现在有个问题
目的是为了让操控的飞机,按X键射出子弹
按住X键的话可以连续射击,如果快速按X键可以快速射出子弹
原代码如下,关于if里延迟射击的地方稍微不太明白,求助吧里的大哥,如果有空请帮忙开导开导,拜托了~
object是玩家操作的飞机,oPlayerShot1是子弹
Creat里的代码
firingDelay = 0;
firingDelayMax = 10;
Step里的代码
if (keyboard_check(ord('X'))) //如果按下X键
{
if (firingDelay > 0) //如果firingDelay>0
{
firingDelay -= 1; // 那么firingDelay = firingDelay - 1
}
else //如果firingDelay=0
{
instance_create(x, y, oPlayerShot1); //射出子弹
firingDelay = firingDelayMax; //射出子弹后firingDelay变为最大值10
}
}
else
{
firingDelay = 0; //不按X键的时候,firingDelay变为0,那么就可以射出子弹
}
注释是我写的,我有点没弄明白,尤其是连续按X键的时候没想清楚这个if是怎么进行的。


IP属地:湖北1楼2013-03-19 13:48回复
    连续按x键和按住x键执行方式一样。但是因为检测方式为没按时计数器清零,所以连续按时,会检测你按下的时间够不够。不够的话这次按下为无效按下,那么就不会生成子弹,也不会给下次按键带来累计福利。
    比如你的房间速度为60,那么意味这着你的游戏循环运算为每秒60次,你检测按键要持续10步,得出你按下键盘持续时间超过1/6秒时,能发射出子弹,少于1/6秒则无法发射子弹。


    IP属地:河北2楼2013-03-19 15:48
    收起回复
      2025-12-25 03:00:22
      广告
      不感兴趣
      开通SVIP免广告
      (keyboard_check(ord('X'))
      是持续按键,也可以是按下不松。


      IP属地:河南来自手机贴吧3楼2013-03-19 16:16
      收起回复