最近我一直在排練Sprite Kit,我遇到了一個很奇怪的問題。當縮放父節點(改變縮放比例)時,由SKPhysicsJointPin連接在一起的物體逐漸彼此分開,然後關節斷開。讓我給你看看這些圖像。縮放時接頭斷裂
這是正常狀態:
這裏放大時'S:
在這裏,縮小時是:
如果你問我如何加入機構:我加盟棕色粘在藍色節點中心的藍色節點上。任何想法我的問題是什麼?
編輯:我最近發現,關節不會中斷,一切工作如預期當連接的身體不動態。因此,例如,如果我使用[SKPhysicsBody bodyWithEdgleLoopFromRect]而不是 [SKPhysicsBody bodyWithRectangleOfSize]爲精靈創建物理主體,則沒有任何問題。但我需要身體是動態的。
下面是我用來將物理附加到節點的代碼。當然,這一切都是動態完成的。爲了簡潔,我只是硬編碼。
-(void)attachPhysics{
//fixedComponentLeft & fixedComponentRight are two SKSprites
fixedComponentLeft.physicsBody=[SKPhysicsBody bodyWithCircleOfRadius:fixedComponentLeft.frame.size.width];
fixedComponentRight.physicsBody=[SKPhysicsBody bodyWithCircleOfRadius:fixedComponentLeft.size.width];
beam1.physicsBody=[SKPhysicsBody bodyWithRectangleOfSize:beam1.size];
joiningBody.physicsBody=[SKPhysicsBody bodyWithCircleOfRadius:joiningBody1.size.width];
[self.scene.physicsWorld addJoint:[SKPhysicsJointPin jointWithBodyA:fixedComponentLeft.physicsBody bodyB:beam1.physicsBody anchor:fixedComponentLeft.position]];
[self.scene.physicsWorld addJoint:[SKPhysicsJointPin jointWithBodyA:joiningBody.physicsBody bodyB:beam1.physicsBody anchor:beam1.endPoint]];
beam2.physicsBody=[SKPhysicsBody bodyWithRectangleOfSize:beam2.size];
[self.scene.physicsWorld addJoint:[SKPhysicsJointPin jointWithBodyA:joiningBody.physicsBody bodyB:beam2.physicsBody anchor:beam2.position]];
[self.scene.physicsWorld addJoint:[SKPhysicsJointPin jointWithBodyA:fixedComponentRight.physicsBody bodyB:beam2.physicsBody anchor:beam2.endPoint]];
}
在上面的代碼中,beam1和beam2是SKSpriteNode的子類的實例。默認情況下,錨點是(0,0.5),我添加了一個名爲endPoint的屬性,它作爲精靈最右邊的邊緣點。
謝謝@Andrew的洞察力。我已經添加了一些代碼。 –
您是否在設置錨點位置時嘗試使用[yourScene convertPoint:fromNode:]? – Andrew
我剛剛做了你的建議後,其實我可能以前試過。但它並沒有幫助 –