iOS - 如何根据元素的数量调整屏幕上的元素大小

时间:2017-06-23 21:10:33

标签: ios swift xcode sprite-kit

所以我正在开发一个使用Spritekit的游戏,该游戏使用Sprites的金字塔(让我们为简单的实例说圈子)。用户可以选择他们想要在游戏中拥有的精灵行数。精灵是形成金字塔,所以如果你有1行,你有1个精灵节点。它越往下走2(你选择的行越多) - 创建金字塔形状。因此,如果用户选择3行,游戏板将如下所示:      O O O O O O O O O

然而,当它达到5行时,它会失去金字塔形状,因为屏幕只有这么宽,它必须将所有元素都装到屏幕上(元素在下面的行中更加平滑)。

我的问题是,为了解决这个问题,我需要做些什么来使金字塔调整大小并根据选择的行数改变元素之间的间距?我是否必须将间距乘以某个因子?我也听说过人们在屏幕上添加图层 - 可能会在某种容器中绘制精灵,以便它总是调整金字塔大小以适应屏幕而不会扭曲金字塔形状?

2 个答案:

答案 0 :(得分:0)

你的想法是对的!创建一个SKNode容器,然后更新它的.size属性,或执行.setScale

(现在不是xcode,如果不是100%,请原谅)

// Say that our scene's size is 400x400:
let bkg = SKShapeNode(rectangleOfSize: self.size)
bkg.addChild(firstSprite)
bkg.addChild(secondSprite) // And so on...

// Find the farthest point in bkg:
var farthestX = CGFloat(0)
for node in bkg.children {
  if node.position.x + node.frame.size.width / 2 > farthestX {
    farthestX = node.position.x + node.frame.size.width / 2
  }
}

// Do math to resize the bkg:
if self.size.width < farthestX {
  let scaler = self.size.width / farthestX
  bkg.setScale(scaler)
}

这应该有效,或者至少一般的想法应该有效...你也想检查Y值和高度。

答案 1 :(得分:0)

您可以轻松计算与行数成比例的对称大小,并相应地调整精灵大小。这是我在伪代码中的想法:

cmake version 2.8.8