我有一个节点js游戏,我在其中使用一个函数来向玩家生成搜索导向向量。 问题是我正在使用设置间隔来不断更新此向量以及我的播放器在客户端移动时的其他数据。我正在寻找每个间隔为100多个敌人生成这些向量的方法。 有什么办法可以使整个过程更好吗?我当时在考虑基于事件的事件,但我不知道敌人Ai会如何应对,因为玩家位置需要不断更新才能使服务器端搜索功能正常工作。
setInterval(function () {
let seekList = [];
let enemyIndices = [];
for (let i = 0; i < amountOfEnemyLeaders; i++) {
let index = mainEnemies[i];
seekData = calculateSeek(lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]], players[socket.id]);
if (seekData !== undefined) {
lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.x = seekData.movement.x * 10;
lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.y = seekData.movement.y * 10;
seekList.push({x: lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.x, y: lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.y});
enemyIndices.push(mainEnemies[i]);
}
}
io.in(lobbyCode).emit('applyEnemyMovement', seekList, enemyIndices, lobbyObjs[lobbyCode].enemies);
}, 50);