【问题标题】:Issues scaling sprite width to screen width将精灵宽度缩放到屏幕宽度的问题
【发布时间】:2016-11-07 05:56:31
【问题描述】:

实际上,我试图实现与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】:

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

    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 • 在你做任何其他事情之前分配你的physicsBody。 2 • 锚点应为 CGPoint(0.5, 0.5) 3 • 您还需要运行 SKAction 将图像移动到屏幕中心

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2017-07-04
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      相关资源
      最近更新 更多