gpt4 book ai didi

javascript - 需要帮助合并 2 个位置数组和 for 循环

转载 作者:行者123 更新时间:2023-12-02 14:08:35 25 4
gpt4 key购买 nike

我正在制作一款游戏,我有 2 个数组,一个用于子弹变量,另一个用于敌人变量。它们都有单独的 for 循环,使对象发挥作用,移动,跟随,瞄准等。我现在只担心 x 和 y 值,它们存储在前 2 个数组值中(所以其中一个可能是敌人[0] [0] 为 x 值)。

我是否可以合并这两个以便它们交互?

for(var i = 0; i<enemies.length;i++){
enemies[i][0]+=blah blah blah;
enemies[i][1]+=blah blah blah;
}

for(var i = 0; i<bullets.length;i++){
bullets[i][0]+=blah blah blah;
bullets[i][1]+=blah blah blah;
}

根据这里的评论,这是我的游戏

/image/gqjlO.jpg

最佳答案

for(var i = 0; i < Math.max(enemies.length, bullets.length);i++){
if(i < enemies.length){
enemies[i][0]+=blah blah blah;
enemies[i][1]+=blah blah blah;
}
if(i < bullets.length){
bullets[i][0]+=blah blah blah;
bullets[i][1]+=blah blah blah;
}
}

基于另一种方式的评论:

for(var i = 0; i < bullets.length; i++){
//for each bullet
bullets[i][0]+=blah blah blah;
bullets[i][1]+=blah blah blah;

for(var j = 0; j < enemies.length;j++){
// each enemy
enemies[j][0]+=blah blah blah;
enemies[j][1]+=blah blah blah;

if(enemies[j].BBox.checkCollision(bullets[i])){
// they collide
}
}
}

如果你只有 x 和 y 坐标,那么很难检查碰撞,你需要边界框,甚至可能是子弹,我建议你使用 OOP

如果你至少有偏移量,碰撞检查可以这样完成:

var bbox = {
'x': 0,
'y': 0,
'width': 100,
'height': 200
};

bbox.checkCollision = function(bullet){
return (bullet[0] > bbox.x && bullet[0] < bbox.x + bbox.width
&& bullet[1] > bbox.y && bullet[1] < bbox.y + bbox.height);
}

for(var i = 0; i < bullets.length; i++){
for(var j = 0; j < enemies.length;j++){
bbox.x = enemies[j][0];
bbox.y = enemies[j][1];

if(bbox.checkCollision(bullets[i])){
// bullets[i] collide with enemies[j]
}
}
}

关于javascript - 需要帮助合并 2 个位置数组和 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39838368/

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