将缩放子画面宽度缩放到屏幕宽度

问题描述 投票:6回答:1

[实际上,我试图实现与this question中的效果没有太大不同(缩放精灵,无论它在屏幕上的位置如何,直到它填满屏幕宽度为止)。请在下面查看我的代码:

      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

        }
     }

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

是什么原因导致子画面扩展不一致(不总是填充屏幕宽度,我如何每次都能使其填充整个宽度?

swift sprite-kit swift3
1个回答
0
投票

如果您需要不成比例的缩放比例:

SKAction.scaleX(to: self.size.width / mySprite!.sprite.size.width, duration: 0.1)
SKAction.scaleY(to: self.size.height / mySprite!.sprite.size.height, duration: 0.1)

1•在执行其他任何操作之前,请分配PhysicalBody。2•锚点应为CGPoint(0.5,0.5)3•您还需要运行SKAction将图像移至屏幕中央

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

© www.soinside.com 2019 - 2024. All rights reserved.