gpt4 book ai didi

javascript - 连续删除数组项(游戏障碍)

转载 作者:行者123 更新时间:2023-11-28 01:09:59 24 4
gpt4 key购买 nike

我正在开发一款无尽的运行游戏,其中障碍物是连续创建的,然后向左移动 - 因此,每个障碍物在一秒钟左右的时间内对玩家来说是不可见的,但它不是游戏中的任何具体数字速度正在增加。

有没有办法删除每个障碍,例如在创建后三秒,以节省一些内存/加快游戏速度?

我正在使用存储障碍物的数组的全局定义:

var obstacles = []

然后我创建一个障碍:

function display(obstacle) {
obstacle.draw()
// the ".draw" function contains a simple "ctx.drawImage"
}

function display_loader(){
for(i in obstacles){
display(obstacles[i])
}
}

之后,我移动障碍物并使用类似的函数检查其碰撞位置。

您能给我一个提示吗,如何让数组最多包含 3-5 个项目?另外,它会对游戏速度产生一些影响(考虑到它是在移动平台上使用的),还是完全没有必要?游戏开始后清空数组就足够了吗? (在一个游戏周期中最多创建约 100 个元素)。如果是这样,我到底应该如何清空这个数组? 障碍 = [] 就足够了吗?

最佳答案

您可以用队列替换数组,并在每次添加新元素时不断移动它,这样大小将是恒定的(代码示例取自 here ):

var queue = [];
queue.push(2); // queue is now [2]
queue.push(5); // queue is now [2, 5]
var i = queue.shift(); // queue is now [5]

如果固定大小的队列还不够 - 您是否跟踪对象何时变得不可见?每个对象是否都有一些关联的坐标?您可以信赖此信息何时进行队列转移,并且仅当项目变得不可见时才进行转移(但这仅当项目按照它们消失的顺序添加时才有效)。

关于javascript - 连续删除数组项(游戏障碍),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24569175/

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