我发现SKSpriteNode
的{{1}}有'问题'/(奇怪的互动)。设置SKPhysicsBody
后,如下所示:
SKPhysicsBody
我想向节点添加更多物理实体,因此我将其添加到node.physicsBody = SKPhysicsBody(bodies: bodies)
列表并再次调用相同的行。事实证明,如果您想在初始化后再次更改节点bodies
,节点的重力设置也会重置。
我的意思是,如果节点的SKPhysicsBody
变量最初为affectedByGravity
,然后重置节点的physicsBody,则变为false
。
即使更奇怪,如果节点的true
变量最初为affectedByGravity
,然后重置节点的physicsBody,则重置节点的重力加速度。因此,节点看起来在屏幕上“不稳定”,并且在重力作用下不能平稳地加速。
当我重置节点的physicsBody时,我不希望发生这种情况,我只是想改变它的物理体,而不会影响它的重力。 Swift 中的任何想法都会非常赞赏。
谢谢!
答案 0 :(得分:0)
问题实际上是当你重置一个SKSpritenode
的physicsBody时,它会自动将该physicsBody的速度设置为0.从我试过的,你无法阻止它。
然而,为了解决这个问题,在重置physicsBody之前保存physicsBody的速度,然后将旧的速度设置为新的速度:
let vel = node.physicsBody?.velocity
node.physicsBody = SKPhysicsBody(bodies: bodies)
node.physicsBody?.velocity = vel!