gpt4 book ai didi

javascript - 如何限制 JavaScript 游戏中的子弹数量?

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:51 25 4
gpt4 key购买 nike

所以这个问题真的很糟糕,因为我不知道该问什么,也不知道我想做什么,但是...

我有一个正在创建的游戏,我已经为激光添加了一个数组。它工作正常,但我想限制一次可以在屏幕上显示的激光数量,这样玩家就不会只是通过空格键来取胜。

我尝试通过制作一定数量的子弹来限制它,这只允许用户射击两次但是我试图在它到达 Canvas 顶部后添加回子弹以便他们可以再次开始射击但它没有用.

我假设这是因为它在 spacePressed 内,如果它认为 spacePressed 是假的,所以它不会在它添加一颗子弹的地方运行,但是当我把添加的子弹放在 spacePressed 之外时它仍然不起作用.

我不确定如何着手做我想做的事情,如果有任何解决此问题的想法,我将不胜感激。我还必须稍后添加激光在击中 meteor 时消失并添加一颗子弹的位置,所以我也想帮助解决这个问题。

https://jsfiddle.net/200uaqrn/18/ <-在添加任何元素符号之前

https://jsfiddle.net/200uaqrn/19/ <-添加我尝试创建有限的子弹

if(spacePressed) {
if(lasers.y<=laserSize) {
bullets+=1;
}
else{
drawLaser();
lasers.forEach(function(laser,index){
laser.y-=laserdY;
})
}
}

对于同一个元素,我还要单独提出问题,我稍后会让多个 meteor 同时坠落,我假设我会为此使用一个数组。但我不知道如何使用该阵列使它们在不同时间从随机的 y 绳索上掉落,等等。

最佳答案

对于激光,你可以尝试只设置一个带超时的函数:

var canFire = true;

function allowFire() {
canFire = true;
}

function newLaser() {
this.x = turretX
this.y = canvas.height - 75
canFire = false;
setTimeout(allowFire, 3000);
}

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);

function keyDownHandler(e) {
if (e.keyCode === 39) {
rightPressed = true;
} else if (e.keyCode === 37) {
leftPressed = true;
}
if (e.keyCode === 32 && canFire == true) {
spacePressed = true;
lasers.push(new newLaser())
}
}

注意这里的冷却时间是 3000。

这将限制屏幕上同时的子弹数量,因为玩家只会每x毫秒射击一次,如果你想要精确数量的子弹,你可以做一个var 为他们添加所需的数量,然后每次玩家按下空格时删除一个,并在此处检查 > 0:(e.keyCode === 32 && canFire == 真)

对于 meteor ,如果你要使用数组,要使它们随机落下,你可以使用这个函数(在 Mozilla Developers 中找到):

function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}

因此您可以将它用于坐标和时间,您也可以使用随机时间的超时(如上所示),使用它(来自同一来源):

function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}

如果它是一个数组,您可以像 getRandomArbitrary(i * 1000, i * 3000) 那样使用它,因为 ifor 中的索引> 循环。这取决于您希望它们工作的具体程度,有很多方法可以做到这一点,一个调用自身的函数,while 循环等。

关于javascript - 如何限制 JavaScript 游戏中的子弹数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com