スケーリング後にSKReferenceNodeが正しく衝突しないという奇妙な問題があります。それは中央でよく衝突しますが、衝突やエッジの接触は無視されます。SKReferenceNodeスケールの後にスウィフトコリジョンが機能しない
Here is the first photo of the scene。 SKReferenceNodeは大幅に拡大され、this写真のように、エッジで正しく衝突しません。 PhysicsBodyは(showPhysics onで)正しいと思われますが、ボールは衝突しません。
SKReferenceNodeは、将来アニメーションなどを行うために、より大きなスプライトに変更する必要があるため、アルファ衝突マスクを使用しています。さらに、スケーリングされていないオブジェクトは完全に正常に機能します。最後に、ボールが動作しているセンターにボールが衝突し、ブロックがリセットされると、衝突が再び期待通りに機能し始めます。それを修正するコードはおそらくリセット機能にありますが、レベルがロードされる前にすべてをリセットするので、意味がありません。ここに私のリセットコードの一部です:
func reset() {
physicsWorld.gravity = CGVectorMake(0, -9.8)
for grav in gravityBlock {
grav.reset()
}
gravity = -9.8
//Resets blocks
for blocks in destroyedBlocks { //the blocks are stored in destroyedBlocks when collided with
blocks.reset()
}
destroyedBlocks = []
/*Irrelevant code removed*/
}
ここに私のblocks.reset()関数です:
override func reset() {
super.reset()
self.physicsBody?.categoryBitMask = 1
removeAllActions()
self.texture = self.text
shadow.hidden = false
self.alpha = 0
shadow.alpha = 0
let appear = SKAction(named: "Appear")!
self.runAction(appear)
shadow.runAction(SKAction.fadeInWithDuration(0.25))
}
ここsuper.reset()
func reset() {
self.hidden = false
state = .NotBroken
}
は本当にありがとうございました!
私は実際にこれを試しましたが、[ここ](http://i.imgur.com/ZC40jam.png)は写真へのリンクです。 physicsBodyはブロック全体をカバーしますが、まだ衝突しません。 –