0
所以我有一個槳/酒吧,當酒吧碰到一個球時,它會縮小。我也想更新槳/條的SKPhysicsBody,以便它保持與視覺精靈一樣的碰撞盒。我該如何做到這一點?更新SKPhysicsBody rectangleOfSize
這裏是我當前的代碼,位於一個didBeginContact碰撞功能如預期
bar.size = CGSizeMake(16 * playerLife, 16)
bar.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 16 * playerLife, height: 64))
的bar.size作品裏面。 physicsBody rectangleOfSize使遊戲崩潰。
更新:響應包含更多的代碼來評論
bar.size = CGSizeMake(16 * playerLife, 16)
bar.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 16 * playerLife, height: 64))
func CollisionWithDeathBar(ball: SKSpriteNode, deathBar: SKSpriteNode) {
playerLife--
bar.size = CGSizeMake(16 * playerLife, 16)
shouldResizePaddle = true
}
override func didSimulatePhysics() {
if shouldResizePaddle {
bar.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 16 * playerLife, height: 64))
shouldResizePaddle = false
}
}
我更新了我的文章,以包括更多的代碼。我試過你的例子,我得到一個奇怪的問題。槳/條(碰撞時)跳下約32個像素。並允許所有的球穿過它。看起來SKPhysicsBody簡直就消失了。它也崩潰(有時)「致命錯誤:在解包可選值時意外發現零」 – Glutch
無法從您發佈的代碼中診斷出所有這些問題。然而,至少有一些是清楚的:如果你重新創建一個物理體,你需要重新設置與它相關的所有屬性(如碰撞掩碼)。 – rickster
這正是缺少的,謝謝!我沒有意識到它被重新創建。我認爲它只是改變了這個值,類似於更新變量。謝謝。 – Glutch