SpriteKit - Как исправить искажения в анимации узла?

Я создал анимацию различных PNG, но есть различные кадры, которые растягиваются до границы, поэтому узел "заполнен". Анимация должна выглядеть как GIF, который я создал, используя те же картинки. Кто-нибудь знает, как сделать анимацию похожей на GIF?

GIF: GIF: анимация должна выглядеть так

Actual: Extra slow Фактический результат кода

Граница: Здесь вы можете увидеть границу физического тела, которая имеет тот же размер, что и "граница узла".

Я попытался исправить проблему, переключив scene.scalemode. Далее я попытался сделать размер узла зависимым от размера текстур. Ни один не выглядел как GIF.

class GameScene: SKScene {

var player = SKSpriteNode()
var frames : Array = [SKTexture]()

override func didMove(to view: SKView) {

    //Color: Placeholder; Size should be size of original frames
    player = SKSpriteNode(color: .red, size: CGSize(width: 500,     height: 1000))

    //Physics
    player.physicsBody = SKPhysicsBody(rectangleOf: player.size)
    player.physicsBody?.affectedByGravity = false

    //Init the frames to the array
    for i in 1...6 {
        frames.append(SKTexture(imageNamed: "playerRunLeft-\(i)"))
    }
//        Tried to make the player size dependent on the image size - didn't work out
//        for i in frames {
//            player.size = i.size()
//        }

    //Attach the action
    let runAction = SKAction.animate(with: frames, timePerFrame: 0.3)
    player.run(SKAction.repeatForever(runAction))

    //Add to scene
    addChild(player)
    }
}

0 ответов

Другие вопросы по тегам