我正在构建我的第一个精灵套件游戏,最近阅读了一篇文章,说使用 SKTextureAtlas 来提高性能。
所以我将我所有的精灵图像迁移到有组织.atlas
的文件夹中,并相应地更新了代码。然而,现在我的精灵有奇怪的物理体(主要是过度放大)。
例如,我的播放器精灵具有三种状态:飞行(平面)、向上飞行和向下飞行。这三幅图像非常相似,略有不同(手臂指向平、上、下)。
在迁移到纹理图集之前,物理主体与图像非常吻合。然而,现在它比图像大得多,并且在 y 轴上略微拉伸。
这是我的 player.atlas 文件结构:
播放器-飞行-iphone.atlas:
- player-flying-down@2x.png
- player-flying-down@3x.png
- player-flying-up@2x.png
- player-flying-up@3x.png
- player-flying@2x.png
- player-flying@3x.png
这是我的代码示例: (Player 是一个子类 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