SpriteKit 中单个节点的自定义重力

Custom gravity for single node in SpriteKit

我想为选定的精灵节点设置自定义下降速度。

问题是,如果重力更新,它会改变所有的场景节点。

如果使用impulse,开始时速度会比较大,想要的行为是逐渐加速或者使用恒速(具体节点不同)。

可以在更新函数中手动完成,但也许有更好、更优雅的解决方案?

重力是一种力,所以你想要 SKPhysicsBody 的 applyForce 并且它只做 1 帧,所以更新功能是正确的

使用 SKFieldNode 并设置 fieldBitMaskcategoryBitMask,这样它只会影响所需的节点。

如果您想降低某些节点的重力,请添加一个 linearGravityField 来影响这些节点并设置其强度以将法向重力降低到所需的程度。或者您可以直接将添加的字段设置为所需的值,并将特殊节点的 affectedByGravity 设置为 false 以关闭这些节点的正常重力。

如果你想让一些下落的节点达到恒定的速度,也许也包括一个dragField,并设置它的强度以在达到所需的终端速度时平衡重力加速度。

https://developer.apple.com/documentation/spritekit/skfieldnode