SpriteKit 中单个节点的自定义重力
Custom gravity for single node in SpriteKit
我想为选定的精灵节点设置自定义下降速度。
问题是,如果重力更新,它会改变所有的场景节点。
如果使用impulse,开始时速度会比较大,想要的行为是逐渐加速或者使用恒速(具体节点不同)。
可以在更新函数中手动完成,但也许有更好、更优雅的解决方案?
重力是一种力,所以你想要 SKPhysicsBody 的 applyForce 并且它只做 1 帧,所以更新功能是正确的
使用 SKFieldNode
并设置 fieldBitMask
和 categoryBitMask
,这样它只会影响所需的节点。
如果您想降低某些节点的重力,请添加一个 linearGravityField
来影响这些节点并设置其强度以将法向重力降低到所需的程度。或者您可以直接将添加的字段设置为所需的值,并将特殊节点的 affectedByGravity
设置为 false
以关闭这些节点的正常重力。
如果你想让一些下落的节点达到恒定的速度,也许也包括一个dragField
,并设置它的强度以在达到所需的终端速度时平衡重力加速度。
https://developer.apple.com/documentation/spritekit/skfieldnode
我想为选定的精灵节点设置自定义下降速度。
问题是,如果重力更新,它会改变所有的场景节点。
如果使用impulse,开始时速度会比较大,想要的行为是逐渐加速或者使用恒速(具体节点不同)。
可以在更新函数中手动完成,但也许有更好、更优雅的解决方案?
重力是一种力,所以你想要 SKPhysicsBody 的 applyForce 并且它只做 1 帧,所以更新功能是正确的
使用 SKFieldNode
并设置 fieldBitMask
和 categoryBitMask
,这样它只会影响所需的节点。
如果您想降低某些节点的重力,请添加一个 linearGravityField
来影响这些节点并设置其强度以将法向重力降低到所需的程度。或者您可以直接将添加的字段设置为所需的值,并将特殊节点的 affectedByGravity
设置为 false
以关闭这些节点的正常重力。
如果你想让一些下落的节点达到恒定的速度,也许也包括一个dragField
,并设置它的强度以在达到所需的终端速度时平衡重力加速度。
https://developer.apple.com/documentation/spritekit/skfieldnode