我最近开始用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
谢谢!
答案 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;
}
}