【发布时间】:2016-05-19 18:29:49
【问题描述】:
我试图在游戏开始时阻止我的节点掉落一两秒钟。所以我的问题是当我按下启动时,节点已经在屏幕的中间。我还尝试更改节点启动的高度,但这似乎是一个昂贵的解决方案,因为我要小心不要让我的 FPS 变得太低。在我的代码中,我试图在 didMoveToView 中执行此操作,并且我正在使用 waitForDuration 但它不起作用。
Example Image of Nodes Falling Down
有没有 SpriteKit 高手知道我应该怎么做?我正在使用斯威夫特。 这是我的代码:
override func didMoveToView(view: SKView) {
let wait = SKAction.waitForDuration(2.5)
let run = SKAction.runBlock {
self.spawnNumbers()
}
numContainer.runAction(SKAction.sequence([wait, run]))
}
func spawnNumbers() {
let minValue = self.size.width / 8
let maxValue = self.size.width - 36
let spawnPoint = CGFloat(arc4random_uniform(UInt32(maxValue - minValue)))
let action = SKAction.moveToY(-300, duration: 2)
numContainer = SKSpriteNode(imageNamed: "Circle")
numContainer.name = "Circle"
numContainer.size = CGSize(width: 72, height: 72)
numContainer.anchorPoint = CGPointMake(0, 0)
numContainer.position = CGPoint(x: spawnPoint, y: self.size.height)
numContainer.runAction(SKAction.repeatActionForever(action))
numContainer.zPosition = 2
let numberLabel = SKLabelNode(fontNamed: "AvenirNext-Bold")
numberLabel.text = "\(numToTouch)"
numberLabel.name = "Label"
numberLabel.zPosition = -1
numberLabel.position = CGPointMake(CGRectGetMidX(numContainer.centerRect) + 36, CGRectGetMidY(numContainer.centerRect) + 36)
numberLabel.horizontalAlignmentMode = .Center
numberLabel.verticalAlignmentMode = .Center
numberLabel.fontColor = UIColor.whiteColor()
numberLabel.fontSize = 28
addChild(numContainer)
numContainer.addChild(numberLabel)
numContainerArray.append(numContainer)
numToTouch += 1
}
【问题讨论】:
-
所以这是基于物理的?还有你想说什么“因为我想成为ca”?
-
@cocojoe 该应用程序不是基于物理的。 (也修正了错字。)
-
所以
spawnNumbers()为你启动了这个动作,它被调用的唯一地方是在这个动作块中?为什么不在玩家按下你的开始按钮后使用你的动作序列?对你的“保持我的 FPS 低”声明有点好奇? -
显示 self.spawnNumbers()
-
FPS 是每秒帧数。我这么说是因为我不想要低帧。
标签: ios swift sprite-kit skspritenode sklabelnode