Swift 使 sksprite 节点随时间移动得更快

Posted

技术标签:

【中文标题】Swift 使 sksprite 节点随时间移动得更快【英文标题】:Swift making sksprite node move faster with time 【发布时间】:2015-07-12 01:12:20 【问题描述】:

我有一个通过函数生成的精灵节点:

    let NBrick1 = SKSpriteNode(texture: Brick1)
    NBrick1.setScale(0.04)
    NBrick1.position = CGPointMake(0.0, CGFloat(y1 + bounds/2))
    NBrick1.physicsBody = SKPhysicsBody(rectangleOfSize: NBrick1.size)
    NBrick1.physicsBody?.dynamic = true
    BrickPairs.addChild(NBrick1)

我正在使用这个 SKAction 来搬砖:

   let moveBricks = SKAction.moveByX(-distanceToMove, y: 0.0, duration: NSTimeInterval(0.01 * distanceToMove))
   let removeBricks = SKAction.removeFromParent()
   BricksMoveAndRemove = SKAction.sequence([moveBricks,removeBricks])

我想知道是否有办法让砖块随着时间的推移移动得更快。

【问题讨论】:

您可以使用 MoveBricks.duration 访问/更改持续时间。因此,在您的情况下,您可以缩短持续时间,这样您的精灵将在更短的时间跨度内达到相同的距离。 不清楚您所说的“随着时间的推移移动得更快”是什么意思。您希望下次创建 sprite 时移动得更快,还是希望现有的 sprite 加快速度? 我希望下次创建它们时移动得更快 @DanielMihaila 是正确的。您应该将 0.01 设为变量并随着时间的推移减少它。 现在我正在运行一个函数和一个 skrunblock: let timeChange = SKAction.runBlock(self.timeChanger()) 运行: func timeChanger() timechanger = timechanger - 0.00001 但是我并没有真正看到砖块换时器速度的影响是 .01 的变量 【参考方案1】:

其实很简单,你不需要参与SKActions。下面的代码将加速一个精灵或多个精灵的移动(如果您应用相同的代码)。它所做的是每次将精灵的位置每帧改变一点点。这是moveFactor 变量。要更改启动速度和加速速率,请更改我输入的值。

var moveFactor:CGFloat = 0.5

override func update(currentTime: CFTimeInterval) 
    /* Called before each frame is rendered */
    sprite.position = CGPoint(x: sprite.position.x + moveFactor, y: sprite.position.y)
    moveFactor *= 1.005

【讨论】:

以上是关于Swift 使 sksprite 节点随时间移动得更快的主要内容,如果未能解决你的问题,请参考以下文章

检查没有物理实体的 SKSprite 节点之间的碰撞

为 SKSprite 游戏创建登录页面

Swift SpriteKit:翻转父精灵随机子节点水平对齐

使视图的高度随图像 Xcode swift 的高度动态变化

如何使输入占位符随光标动态移动?

如何使 JavaScript 画布元素随鼠标移动?