gpt4 book ai didi

ios - 基于体积的 physicsBody 被手动移动而不接触基于边缘的 physicsBody

转载 作者:行者123 更新时间:2023-11-28 06:29:49 25 4
gpt4 key购买 nike

因此,在我的 Space Invaders 游戏中,所有碰撞都完美运行,直到我添加了一个从 edgeChainFromPath 创建的物理体,它是代表地面的一条线(从 2 个点创建的 SKShapeNode)。现在我的入侵者炸弹(通过 SKAction 移动)在落地时发出通知,但我的入侵者(通过手动更新位置在 update() 中移动)没有。我的飞船导弹(也由 SKAction 移动)在接触入侵者时会发出通知。

问题:如果一个 physicsBody 被手动移动并与另一个 physicsBody 接触,didBeginContact 不会被调用吗? (所有物理交互 - 位掩码、委托(delegate)等 - 均已正确设置)。我在想答案是“不,不是”,因为这是唯一的解释,并且很有意义地描绘了 Sprite/Kit 可能如何工作。 IE。当 SK 引擎本身移动一个节点并意识到它的 physicsBody 被绘制在另一个 physicsBody 之上时,就会发生接触。

编辑 - 刚刚意识到我的场景中还有其他静止的 physicsBodies 并且入侵者确实与之发生碰撞,所以这不是 SKAction 的事情。不同之处可能是我添加的新节点是属于 SKShapeNode 的基于边缘的主体,而不是 SKSPriteNode 的基于体积的主体,但我在文档中找不到任何内容表明这不应该工作.

新问题:手动移动基于体积的物体是否不会与固定的基于边缘的物体发生碰撞?

最佳答案

好吧 - 我的错。入侵者的物理体有 dynamic=false。其他所有 Sprite 都是动态的,因此所有其他碰撞都有效。我的新形状是基于边缘的主体,它也是 dynamic=false。

进行了一次更改,一切正常。我需要更新我的 checkPhysics() 例程来对此进行测试。

编辑:我真的应该早点看到这个 - checkPhysics() 没有打印入侵者在接触地面时通知,我只是把它归结为一个我稍后会修复的小故障。而 checkPhysics() 故意不报告具有 dynamic=false 的节点。我认为当我编写该函数时,我假设您会故意设置 dynamic=false 以不参与碰撞/接触检测。我应该将其更改为打印警告。

关于ios - 基于体积的 physicsBody 被手动移动而不接触基于边缘的 physicsBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40649692/

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