私は画面の上から下に2行移動する単純なゲームを持っています。それらの2つのラインの間に固定されたスペースがあり、ボールがそのスペース内を通過しなければならず、そうでなければゲームは終了する。SpriteKit移動アクションの速度を向上
私はゲームの基本に問題はありません、私は2つの行、毎回異なる位置を持つスペースを追加することができますが、私はまた、行の移動速度を増やしたいと思います。私はタイマーを使用してSKAction.moveのTimeIntervalを増やそうとしましたが、後で追加した行が高速になるので、行間の水平スペースが小さくなり、発生したくありません。
これは、2行を追加して画面の下に移動する機能です。
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