gpt4 book ai didi

swift - 将 Sprite 宽度缩放到屏幕宽度的问题

转载 作者:行者123 更新时间:2023-12-03 09:23:27 26 4
gpt4 key购买 nike

实际上,我试图实现与 this question 中所做的没有太大不同(缩放 Sprite 而不考虑它在屏幕上的位置,直到它填满屏幕宽度)。请看我下面的代码:

      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

}
}

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

什么可能导致 Sprite 扩展不一致(并不总是填充屏幕宽度)以及如何让它每次都填充整个宽度?

最佳答案

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

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 • anchor 应为 CGPoint(0.5, 0.5)
3 • 您还需要运行 SKAction 将图像移动到屏幕中央

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

关于swift - 将 Sprite 宽度缩放到屏幕宽度的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40458673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com