Ich baue mein erstes Sprite-Kit-Spiel und habe kürzlich einen Artikel gelesen, der SektextureAtlas verwendet, um die Leistung zu verbessern.SpriteKit: Die Verwendung von SKTextureAtlas verursacht einen fehlerhaften Physikkörper
Also habe ich alle meine Sprite-Bilder in organisierte .atlas
Ordner migriert und den Code entsprechend aktualisiert. Aber jetzt haben meine Sprites seltsame Physik Körper (hauptsächlich über-vergrößert).
Zum Beispiel hat mein Spieler Sprite drei Zustände: Fliegen (flach), fliegende und fliegende. Die drei Bilder sind ziemlich ähnlich, mit leichten Variationen (Arme zeigen flach, oben, unten).
Vor der Migration zu Textur Atlanten, war der Physikkörper ziemlich genau mit dem Bild. Jetzt ist es jedoch viel größer als das Bild und leicht gestreckt auf der y-Achse.
Hier ist meine player.atlas Dateistruktur:
Spieler-Fliegen-iphone.atlas:
- [email protected]
- Spieler-Fliegen [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
Hier ist ein Beispiel von meinem Code: (Player ist ein subclassed SKSpriteNode)
let textureAtlas = SKTextureAtlas(named: "player-iphone")
let playerFlyingTexture = textureAtlas.textureNamed("player-flying")
let player = Player(texture: playerFlyingTexture, color: UIColor.clearColor(), size: CGSizeMake(100.0, 100.0))
let physicsBody = SKPhysicsBody(texture: playerFlyingTexture, size: CGSizeMake(100.0, 100.0))
physicsBody.dynamic = true
physicsBody.affectedByGravity = true
physicsBody.usesPreciseCollisionDetection = false
physicsBody.categoryBitMask = CollisionCategories.Player
physicsBody.contactTestBitMask = CollisionCategories.Enemy
physicsBody.collisionBitMask = CollisionCategories.EdgeBody
physicsBody.allowsRotation = false
player.physicsBody = physicsBody
Obwohl Sie bereits eine Antwort erhalten haben, würde ich vorschlagen, Xcode Asset-Katalog für SKtextures zu verwenden. Ab Xcode 7 können Sie den Asset-Katalog für Texturbilder verwenden und Apple sagt sogar, dass dies der beste Weg ist. Ich denke daher, dass diese Artikel, die über Atlas-Ordner sprechen, veraltet sind. – crashoverride777