我怎样才能创建一个持续的子弹流?

时间:2013-03-17 16:44:47

标签: javascript html5 web

我最近开始用Codecademy学习javascript。为了扩展我的知识,只是为了好玩,我遵循了Gyrostorm的HTML5游戏教程:http://www.youtube.com/playlist?list=PL290A4D2398C97186/

现在我完成了教程以制作我的游戏版本,但我希望它能够让你拿着空格键时,子弹以一定的速度射击。目前,您必须持续按空格键才能触发。我有一个Jet.shoot函数和一个Jet.checkShoot函数但是在尝试多次setIntervals和setTimeouts之后什么都行不通!请帮忙!

Jet.prototype.checkShooting = function() {
    if(this.isSpacebar && !this.isShooting) {
        this.isShooting = true;
        this.bullets[this.currentBullet].fire(this.noseX, this.noseY)
        this.currentBullet++;
        if(this.currentBullet >= this.bullets.length) {
            this.currentBullet = 0;
        }
    } else if(!this.isSpacebar) {
        this.isShooting = false;
    }
};

Jet.prototype.shoot = function() {
    this.isShooting = true;
    this.bullets[this.currentBullet].fire(this.noseX, this.noseY);
    this.currentBullet++;
    if(this.currentBullet >= this.bullets.length) {
        this.currentBullet = 0;
    }
}

以下是我目前的实时版本:https://googledrive.com/host/0B2Xb6VzofFX-OGxEcnV3OUNTdFU/index.html

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你想拥有一定的火灾率,你需要处理时间。最好的事情是拥有一个游戏时间,但无论如何你需要实现这样的解决方案(我使用了这个例子的真实时间(Date.now()):

if(this.isSpacebar && Date.now()>this.shootPossibleTime) {
    this.shootPossibleTime =Date.now()+this.reloadTimeForThisWeapon;
    this.bullets[this.currentBullet].fire(this.noseX, this.noseY)
    this.currentBullet++;
    if(this.currentBullet >= this.bullets.length) {
        this.currentBullet = 0;
    }
}