【问题标题】:Does collision work during animation for SceneKit?SceneKit 动画期间碰撞是否有效?
【发布时间】:2023-03-25 11:54:02
【问题描述】:

我想做一个简单的小行星游戏,小行星从远处绕过你 (z>0) 在 SceneKit 中。

let moveAction = SCNAction.move(to: SCNVector3(0, -10, 10), duration: 2)
rockNode.runAction(moveAction)

说我在 Z 轴 0 有一艘飞船,即使我可以肉眼看到小行星穿过飞船,但没有发生碰撞检测。只有当 moveAction 的终点在 Z 轴 0 并且与飞船在同一位置时才会发生碰撞。

是否仅在 moveAction 结束后才进行检测(因此不会检测到碰撞)?如果是,我有什么解决方案来检测小行星运动过程中的碰撞?

【问题讨论】:

    标签: swift scenekit


    【解决方案1】:

    您是否将两个对象的 isDynamic 都设置为 true?并且它们都需要具有不同的 categoryBitmask,否则 SceneKit 会将它们视为相同的对象(不能评论还没有 50 个代表)如果没有,那么即使以编程方式移动对象也会发生碰撞

    【讨论】:

    • 如果动画结束于与宇宙飞船相同的位置,则确实发生了联系,因此这不是“由于未设置 categoryBitmasks 问题而没有发生联系。
    【解决方案2】:

    将物理体设为:kinematic。因此即使在 SCNAction 期间它也可以检测到碰撞。

    例如:

    rockNode?.type = .kinematic
    

    或者你可以从物理检查器中设置它

    继续编码....... :)

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2019-11-28
      • 2023-04-09
      • 2019-07-16
      • 1970-01-01
      相关资源
      最近更新 更多