我有一个简单的游戏,两条线从屏幕的顶部移动到底部。这两条线之间有一个固定的空间,一个球必须通过该空间,否则游戏结束。SpriteKit增加移动动作的速度
我对游戏的基础知识没有问题,我可以添加两行,每次都有不同位置的空间,但我也想增加行的移动速度。我尝试使用计时器并增加SKAction.move的TimeInterval,但由于后面添加的行速度更快,因此行间的水平空间变小,我不希望发生这种情况。
这是添加两行并将它们移动到屏幕底部的功能。
func addLines() {
let lineNodeFirst = SKSpriteNode(color: .red, size: CGSize(width: random(min: 100, max: 400), height: 10.0))
lineNodeFirst.position = CGPoint(x: -size.width/2, y: 0 + size.height/2 + 100)
lineNodeFirst.anchorPoint = CGPoint.zero
let actionMove = SKAction.move(to: CGPoint(x: lineNodeFirst.position.x, y: 0 - size.height/2), duration: TimeInterval(2.3))
let actionMoveDone = SKAction.removeFromParent()
lineNodeFirst.run(SKAction.sequence([actionMove, actionMoveDone]))
let centerPoint = CGPoint(x: lineNodeFirst.size.width/2 - (lineNodeFirst.size.width * lineNodeFirst.anchorPoint.x), y: lineNodeFirst.size.height/2 - (lineNodeFirst.size.height * lineNodeFirst.anchorPoint.y))
lineNodeFirst.physicsBody = SKPhysicsBody(rectangleOf: lineNodeFirst.size, center: centerPoint)
lineNodeFirst.physicsBody?.isDynamic = true
lineNodeFirst.physicsBody?.categoryBitMask = 2
lineNodeFirst.physicsBody?.contactTestBitMask = 1
lineNodeFirst.physicsBody?.collisionBitMask = 0
self.addChild(lineNodeFirst)
let spaceBetweenNodes: CGFloat = 150
let lineNodeSecondWidth: CGFloat = size.width - lineNodeFirst.size.width - spaceBetweenNodes
let lineNodeSecond = SKSpriteNode(color: .red, size: CGSize(width: lineNodeSecondWidth, height: 10.0))
lineNodeSecond.anchorPoint = CGPoint.zero
let lineNodeSecondX = lineNodeFirst.position.x + lineNodeFirst.size.width + spaceBetweenNodes
lineNodeSecond.position = CGPoint(x: lineNodeSecondX, y: lineNodeFirst.position.y)
let actionMoveSecond = SKAction.move(to: CGPoint(x: lineNodeSecond.position.x, y: 0 - size.height/2), duration: TimeInterval(2.3))
lineNodeSecond.run(SKAction.sequence([actionMoveSecond, actionMoveDone]))
let centerPointSecond = CGPoint(x: lineNodeSecond.size.width/2 - (lineNodeSecond.size.width * lineNodeSecond.anchorPoint.x), y: lineNodeSecond.size.height/2 - (lineNodeSecond.size.height * lineNodeSecond.anchorPoint.y))
lineNodeSecond.physicsBody = SKPhysicsBody(rectangleOf: lineNodeSecond.size, center: centerPointSecond)
lineNodeSecond.physicsBody?.isDynamic = true
lineNodeSecond.physicsBody?.categoryBitMask = 2
lineNodeSecond.physicsBody?.contactTestBitMask = 1
lineNodeSecond.physicsBody?.collisionBitMask = 0
self.addChild(lineNodeSecond)
}
我分享了一个我的应用程序的基本演示。任何提高线条移动速度的建议?
如果你想增加动线的速度,而不是通过可见的屏幕上,加速它们的所有的所有行加快只有最后一行,循环。 – Whirlwind
如果您使用'SKCamera',您可以移动球而不是线。 – 0x141E