gpt4 book ai didi

ios - 使用重力使 SCNNode 下降?

转载 作者:可可西里 更新时间:2023-11-01 05:03:47 27 4
gpt4 key购买 nike

我有一个 SceneKit 设置,其中有一个 Sphere 设置为 Dynamic body。

我能够运行该应用程序并看到球体落在静态 body 地板上。

我想做的是设置场景,这样 sfere 最初就不会掉落。

然后当一个函数运行时,我希望 sfere 下降。

使场景突然(可能是按下按钮或其他东西时)放下球体的正确逻辑/步骤是什么?

我也尝试过将球体的质量设置为 0,然后将质量设置为 100,但这不会导致掉落...

最佳答案

Mass doesn't control how fast something falls.这在现实世界中是正确的,但在走捷径而不是模拟现实世界物理的每个细节的模拟中更是如此。 (可悲的是,iOS 设备仍然没有 CPU 能力来解释地球的旋转引用系,你的球体和任何特别靠近它的物体之间的范德瓦尔斯吸引力,保持其 三角形的强大力量 atoms together, etc.) 在 SceneKit 中,重力只是在特定方向上的恒定加速度。

将质量设置为零并将其切换为其他东西会干扰静态/运动和动态物体之间的区别......所以不要这样做。

As @mnuages notes ,当您希望它完全受物理影响或不受物理影响时,您可以从球体中添加/删除物理体。

但是,如果您出于其他原因想要保留球体的物理体,例如允许其他物体在您使其开始下落之前与其发生碰撞,该怎么办?您可以使用几种方法:

当其他东西撞击它时,这两者都会阻止球体移动。如果您想让球四处晃动,但不受重力影响,最好的办法可能是为物理场切换场景重力:

  1. scene.physicsWorld.gravity 设置为 SCNVector3Zero
  2. 添加使用 linearGravityField 创建的 SCNPhysicsField构造函数到你的场景,并设置它的 directionstrength 以获得你想要的那种重力行为。
  3. 在您的球体和重力场上设置 categoryBitMask,这样该场会影响其他物体但不会影响球体。

无论您使用这些方法中的哪一种,您都可以在需要时更改它们 "turn gravity on"对于球体:减少阻尼,重置velocityFactor,或更改球体或重力场的categoryBitMask

关于ios - 使用重力使 SCNNode 下降?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845065/

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