gpt4 book ai didi

ios - SceneKit:如何在没有碰撞的情况下检测接触 iOS

转载 作者:搜寻专家 更新时间:2023-11-01 05:42:29 24 4
gpt4 key购买 nike

我正在 Scene Kit 上制作一个太空射击游戏,我希望小行星在飞船与它们接触时爆炸,我不希望它们发生碰撞,我只想知道它们何时相互接触。

问题是我不知道如何在飞船与小行星相交时进行碰撞检测。例如,我希望 Xcode 在它们实际相互接触时记录“COLLIDED”。

我已经为这两个对象添加了 categoryBitMaskcollisionBitMask。那么,我怎样才能做到这一点?顺便说一句,我在 Swift 上做所有事情。

最佳答案

SceneKit 不提供将接触检测与动态物体的碰撞解决方案分开的选项。 (如果你的 body 之一是运动体,它不会解决碰撞,但它也不会通过物理移动。)File a feature request

但是,听起来您的用例与碰撞解决方案兼容——因为小行星正在爆炸,您无需关心碰撞对小行星的影响(只需将其从场景中移除并替换为爆炸 VFX、较小的小行星、太空弹头等等)。如果飞船要在碰撞中幸存下来并且您不希望它受到碰撞的影响,只需设置飞船和小行星的相对质量,这样小行星就不会产生很大的动量。


要在发生碰撞时执行操作,您需要设置一个 contact delegate在你的 scene's physics world .在任何充当您的联系代表的类(class)中,实现 didBeginContact发生碰撞时通知的方法。

在该方法中,您需要查看联系人的 nodeAnodeB 以找出哪些类别的物体发生碰撞(以及哪些是哪些)。一旦你知道,例如,nodeA 是一艘船而 nodeB 是一颗小行星(反之亦然),你就可以杀死小行星,更新你的分数等。

关于ios - SceneKit:如何在没有碰撞的情况下检测接触 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593886/

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