【问题标题】:How to prevent distorted images?如何防止图像失真?
【发布时间】:2018-11-04 09:48:37
【问题描述】:

我遇到的问题是我添加的图像失真。我在(1125 x 2436)为iPhone X创建了一个像素精确的背景,所以我不必使用.aspectFill.aspectFit,因为我想要一个没有黑色边框的屏幕。

我使用以下代码来创建图像:

func animateDeck() {
    let chip = SKSpriteNode(imageNamed: "Chip")
    chip.position = CGPoint(x: 300, y: 400)
    chip.zPosition = 2
    chip.setScale(1)
    gameScene2.addChild(chip)
    print("test")
}

有没有办法在不使用.aspectFit.aspectFill 的情况下以正确的尺寸显示图像?

now (left) and how it should be (right)

提前谢谢你!

【问题讨论】:

  • 如果你有一个与 iPhone X 尺寸完全相同的图像,并将位置设置为view.center,你应该没问题。但是,即使它应该完美贴合,也请将其设置为 aspectFillaspectFit,以免在其他屏幕尺寸上出现失真。
  • 尝试检查chip 是否符合您的预期大小 - 如果不是,您可以使用chip.size = CGSize(width: 1125, height: 2436) 进行设置。
  • 我创建了一个尺寸为 1125 x 2436 的新图像。中间是 128x128 芯片。图像的其余部分是透明的。不幸的是,这不起作用。使用另一个变体gameScene2.scaleMode = .aspectFit 再次显示黑条,我想阻止它。
  • 如果不移动背景,为什么不考虑在视图控制器而不是场景中添加UIImage
  • 当我使用let image = UIImage(named: "Chip")时,我无法将其用作节点。所以我不能再使用SKPhysicsBody、SKAction等。

标签: swift sprite-kit skspritenode


【解决方案1】:

查看this project I just made,向您展示如何创建纹理并将其应用到节点。所有你需要的都应该在GameScene.swift

另外,在您的 ViewController 中,请确保您的 GameScene 已正确初始化,如我的项目中所示,或者您是如何做到的:

gameScene2 = GameScene(size: view, bounds: size)

【讨论】:

  • 我从不建议这样做,请将 sks 设置为 iphone x 的大小。您应该在设计场景时考虑 1 个尺寸,从长远来看,这样的编程只会伤害您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
相关资源
最近更新 更多