gpt4 book ai didi

swift - Spritekit联系人检测崩溃(EXC_breakpoint)

转载 作者:行者123 更新时间:2023-12-01 01:15:25 28 4
gpt4 key购买 nike

我设置了一个游戏,玩家在游戏中控制飞船并射击来袭的敌人。当一个子弹和一个敌人接触时,不会崩溃,但是当两个子弹击中2个不同的敌人时,我在以下函数中崩溃了。(EXC_Breakpoint)

我该如何解决?
谢谢!

 if body1.categoryBitMask==PhysicsCategories.Bullet && body2.categoryBitMask==PhysicsCategories.Enemy && (body2.node?.position.x)!<self.size.width{

最佳答案

所有的Sprite-Kit碰撞都在2个物体之间-您不能让2个子弹击中2个敌人。如果看起来好像有一颗子弹同时击中了2个敌人,那么您实际上会得到一个 call :子弹didBegin()和一个敌人,另一个 call 子弹和另一个敌人。但是,如果您为第一次碰撞的子弹做removeFromParent(),那么对于第二次碰撞您可能会遇到问题,因为子弹的节点将是nil,尽管子弹的物理体仍然存在。

在SO上搜索“Sprite Kit多次碰撞”,因为这是一个常见问题,有多种解决方法。描述的最简单方法是,不对应该“销毁”的节点执行removeFromParent,而是将其添加到数组(或更恰当的说是一组)中。然后在didFinishUpdate中,遍历此集合并删除其中的所有节点。

关于swift - Spritekit联系人检测崩溃(EXC_breakpoint),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48834094/

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