为啥我不使用 for 循环时会发生正确的碰撞,但是当我使用 for 循环时只有 1 个对象有碰撞?

Posted

技术标签:

【中文标题】为啥我不使用 for 循环时会发生正确的碰撞,但是当我使用 for 循环时只有 1 个对象有碰撞?【英文标题】:Why do I get correct collisions when I don't use for loop, but when I use for loop only 1 object has collisions?为什么我不使用 for 循环时会发生正确的碰撞,但是当我使用 for 循环时只有 1 个对象有碰撞? 【发布时间】:2021-04-13 18:10:06 【问题描述】:

所以,让我明确一点,我是初学者。我试图做一些碰撞,并决定对多个对象使用 for 循环。

switch(quest)

    case 1:
        Swords = collectables.create(Game.width / 2 - 300, Game.height / 2, 'sword')
        Swords.body.immovable = true
        break

    case 2:
        for(let i = 0; i < 2; i++)
            Swords = collectables.create(Game.width/ 2 - 20, Game.height / 2, 'sword')
            Swords.body.immovable = true
        
        break

第一把剑工作得很好,但是当我切换到第二个“任务”并使用 for 循环时,只有一把剑发生碰撞,有什么可能的解决方法,谢谢!

完整代码的链接 - https://pastebin.com/Nmh6PVkg

【问题讨论】:

请查看如何创建minimal reproducible example。 碰撞是什么意思? @phuzi Game.physics.arcade.collide(player, ground) Game.physics.arcade.collide(player, enemy1, NPCint) Game.physics.arcade.collide(player, Swords, swordAdd) 小更新 - 删除了 for 循环,问题仍然存在 我对 Phaser 不熟悉,但你能在 for 循环的每次迭代中覆盖 Swords 变量吗? Swords 是否应该是一个包含将新项目推入其中的代码的数组? 【参考方案1】:

问题已解决!忘记把表达式放在函数的括号里了。

【讨论】:

以上是关于为啥我不使用 for 循环时会发生正确的碰撞,但是当我使用 for 循环时只有 1 个对象有碰撞?的主要内容,如果未能解决你的问题,请参考以下文章

当堆栈和堆碰撞时会发生啥

为啥 Python for 循环在遍历列表副本并进行删除时会跳过元素? [复制]

为啥这个for循环不执行?

为啥 for-each 循环适用于数组? (爪哇)

为啥你可以在 for 循环中循环一个隐式元组,但在 Python 中却不能?

为什么循环变量的地址在使用时会发生变化?