将精灵宽度缩放到屏幕宽度的问题

NSo*_*tic 5 sprite-kit swift swift3

实际上我试图实现与这个问题所做的完全不同(无论它在屏幕上的位置如何填满屏幕宽度,都可以缩放精灵).请参阅下面的代码:

      if touch?.tapCount == 2  {  
        self.view?.isUserInteractionEnabled = false

        mySprite?.sprite.anchorPoint = CGPoint(x: (mySprite?.sprite.position.x)! / self.size.width, y: (mySprite?.sprite.anchorPoint.y)!)
        let scaleSpriteAction = SKAction.scaleX(to: self.size.width / (mySprite?.sprite.size.width)!, duration: 0.1)
        mySprite!.sprite.run(scaleSpriteAction)

        delay(0.1)  {
            centerPoint = CGPoint(x: mySprite!.sprite.size.width / 2 - (mySprite!.sprite.size.width * mySprite!.sprite.anchorPoint.x), y: mySprite!.sprite.size.height / 2 - (mySprite!.sprite.size.height * mySprite!.sprite.anchorPoint.y))

            mySprite!.sprite.physicsBody = SKPhysicsBody(rectangleOf:    mySprite!.sprite.size, center: centerPoint)
            mySprite!.sprite.physicsBody!.categoryBitMask = mySpriteCategory
            mySprite!.sprite.physicsBody!.isDynamic = false

        }
     }
Run Code Online (Sandbox Code Playgroud)

精灵扩展但并不总是填满整个屏幕.根据我的观察,当精灵更接近屏幕的左端或右端时,它会更频繁地发生.在延迟之前和之后记录精灵位置并意识到它们不同之后,我禁用了用户交互,但这并没有改变任何东西.延迟确保physicsBody也可以缩放到全屏宽度.

什么可能导致精灵扩展不一致(并不总是填满屏幕宽度),我怎样才能让它每次填充整个宽度?

0-1*_*0-1 0

如果你想要不成比例的缩放:

\n\n
SKAction.scaleX(to: self.size.width / mySprite!.sprite.size.width, duration: 0.1)\nSKAction.scaleY(to: self.size.height / mySprite!.sprite.size.height, duration: 0.1)\n
Run Code Online (Sandbox Code Playgroud)\n\n

1 \xe2\x80\xa2 在做任何其他事情之前分配你的物理主体。\n2 \xe2\x80\xa2 锚点应该是 CGPoint(0.5, 0.5)\n3 \xe2\x80\xa2\xc2\xa0你还需要运行SKAction 将图像移动到屏幕中央

\n\n

如果您想要按比例缩放,以便图像在碰到任何边缘时停止,您将需要跟踪屏幕比例和图像比例。

\n