我正在创建一个非常基本的HTML5游戏,但我似乎无法使碰撞检测正常工作。当子弹与敌人发生碰撞时,子弹被设置为活动变量被设置为假,这意味着它不是绘制并且不用于碰撞检测,但它似乎仍然是。这是我的碰撞检测方法
//Collision detection between bullet and enemy
for (var j = 0; j < enemies.length; j++ )
{
for (var i = 0; i < bullets.length; i++ )
{
if( pointInRect( bullets[i].xPos, bullets[i].yPos, enemies[j].xPos, enemies[j].yPos, 32, 32 ) && ( bullets[i].alive == true ) )
{
bullets[i].alive = false;
enemies[j].xPos = -100;
}
}
}
但是当它确实与敌人发生碰撞时,有时子弹只会继续。有谁能看到这个问题?如果需要,我可以提供更多代码。
帆布
答案 0 :(得分:0)
创建子弹时。它使用了一个有人帮我处理stackoverflow的循环系统。但我们忘了对第一次创作进行检查,这里是代码
for (var i = 0; i < bullets.length; i++ )
{
if ( ! bullets[i].alive && ! bulletDone )
{
bulletDone = true;
bullets[i] = new Bullet( player.xPos + 14, player.yPos);
console.log( "Bullet created" );
}
}
if ( ! bulletDone )
{
bullets[bullets.length] = new Bullet( player.xPos + 14, player.yPos);
console.log( "Bullet created" );
}
基本上就行了
if ( ! bullets[i].alive && ! bulletDone )
是
if ( ! bullets[i].alive)
所以,即使子弹没有活着,它仍然会制造一颗新子弹然后产生两颗子弹。